perm filename E.ALS[UP,DOC]46 blob sn#270477 filedate 1977-03-23 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00033 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00004 00002	Recent NEWS about E
C00017 00003	INDEX of commands.
C00024 00004	Abbreviations and explanation of E documentation.  Credits.
C00028 00005	General remarks.
C00034 00006	PAGE CHANGING, APPENDING, DIVIDING and COMBINING commands.
C00041 00007	WINDOW and ARROW moving commands.
C00050 00008	LINE MARKING commands.
C00053 00009	LINE-EDIT commands.
C00067 00010	Attach and Copy commands: A C
C00076 00011	LINE-INSERT mode.
C00080 00012	Handling very long lines. XBREAK and XJOIN.
C00084 00013	SEARCH (or FIND) commands: F XFIND *
C00099 00014	SUBSTITUTION commands: \
C00111 00015	FILE-SWITCHING and text transfering commands: ε λ H αβH ∃ ? αβ? 
C00122 00016	XJFILL XJUST XJGET XSJFILL XSJUST	Justification commands:
C00146 00017	XALIGN XJLEFT XINDENT → ← XCENTER   MARGIN CONTROL commands:
C00154 00018	XTABLE XTJFILL XTJUST and XTJGET  New commands for tabular material
C00170 00019	Other EXTENDED commands: X<cmd>
C00183 00020	System commands to evoke E and SWITCHES permitted after filenames.
C00191 00021	Using ETV from a TTY or IMLAC.
C00200 00022	PARENTHESIS finding/matching commands: ( ) XLPAREN XRPAREN ↔ XPAREN
C00216 00023	Automatic and manual BEEPING upon command completion: XBEEP
C00218 00024	Message handling partial-sign command: ∂<cmd> 0∂
C00227 00025	Defining and using MACROS: XDEFINE Y
C00239 00026	ETV files extended by other programs.
C00242 00027	BOOK MODE (/B) and the READ command
C00249 00028	IMLAC use of line editor.
C00251 00029	NEW EXTENDED COMMANDS PROVIDED MAINLY FOR TELETYPE USERS
C00253 00030	FILEHACKS
C00255 00031	XNDFAIL and XNDSAIL commands.
C00260 00032	Major chances have been made to the JUST and JFILL commands.
C00267 00033	OLD news about E.  More recent news is on p. 2.
C00314 ENDMK
C⊗;
Recent NEWS about E
  Newest news first; older news on p. 33.
  Directory is on p. 1; Index is on p. 3.

∂3/15/77 -- Bunch of small fixes and a couple of new features.
 Left- and right-arrow cmds made to use search length arg.
 "I" displayed on header line while in line-insert mode (especially for DMs).
 Fix to prevent inputting of BS in a line of text.
 Multipage fix to NDFAIL and NDSAIL commands.
 Fix to updating of trailer line.
 Fix to XRUN and XRSYS cmds to use default extension of DMP to return RPG starts.
 Fix for ambiguous extended command given from line editor.

∂3/8/77 -- E can now be in any one of three possible reporting states.
The reporting state determines how much information E types out at various
times.  The three states are: the normal default state, a verbose state
achieved by the command ⊗XVERBOSE and a terse state achieved by the
command ⊗XTERSE.  The normal state can be restored by giving either
⊗-⊗XVERBOSE or ⊗-⊗XTERSE.  You can find out the current state by giving
either ⊗0⊗XVERBOSE or ⊗0⊗XTERSE.  The normal state now does somewhat less
reporting (that is, less typeout) than formerly, especially for the
parenthesis commands.  However, a new command ⊗XPINFO has been added to
give you the details of the last parenthesis command (or use ⊗XVERBOSE).

No error messages are ever suppressed by the terse state.

The following remarks are currently suppressed in the Terse state:

	Only one MARK and you are there!
	There are no marks!
	Already marked!
	Not marked!
	All marks have been cleared.
	Removing last MARK on this page.
	MARKS on this page only have been cleared.
	Macro ended. (normal end)
	Page is empty.  (XNDFAIL, XNDSAIL cmds)

The following remarks are currently suppressed in Terse and Normal states:

	N characters added/removed (justify commands)
	Line now has N chars. (join)
	You have replaced XXX with YYY (substitute)
	(detailed reporting of the parenthesis commands--use new ⊗XPINFO)
	The new line of N chars lists M items (new directory line commands)

Suggestions other informational remarks to suppress will be accepted.

∂3/8/77 -- Reporting of FIND and related commands has been augmented to
show "(observing case)" or "(ignoring case)" depending on the state of the
EXACT switch.  The fact that the search was for a delimited string is now
indicated by the use of "|" instead of the usual "\" delimiters (which are
still used for an undelimited string search).

Furthermore, a zero argument to any of the Find or Substitute commands
(⊗0⊗F, ⊗0⊗XFIND, ⊗0⊗*, ⊗0⊗\) will simply cause the search and/or
substitute string for the given command to be typed out.  Note that ⊗0⊗F
thus does not take a following search string argument.

∂3/8/77 -- At the end of a line of text, the following line editor commands
no longer activate uselessly:  α<TAB>, αS, αK, αR, and META-<plain char>.

∂2/16/77 -- The method of loading E on an ET command has been changed.  The
 system no longer needs to find space for an upper segment which it would
 end up not needing, if some one else is already useing E.  Now only a lower
 segment is loaded, and code in this section checks to see if there is already
 an upper segment.  If there is, no new segment is loaded.

∂2/11/77 -- The system command ET? now gets the E manual E.ALS[UP,DOC] directly.
		
∂2/5/77 -- Two new commands ⊗XNDFAIL and XNDSAIL generate and insert a new
first line (appropriate for the directory) in appropriate FAIL and SAIL
formats for labels and for specified categories.  No new line will be
generated if the page is empty.

These commands apply to the current page but if more than one page is in
core (through the use of XAPPEND or **<ff> commands) then the information
will be gathered from only that page in which the current line is located and
the information will appear as a new first line on this page. Note: this was
changed on 3/15/77.

	The XNDSAIL command may be used as an information source in a variety
of different ways.  It is not intended for use with text material.

XNDFail, given with a <cr> termination, lists all labels.
	Given with a α<cr> it lists only those labels that have one or more ↑'s
	Given with αβ<cr> it lists only those labels with ↑↑ (or more).

	This command does not take arguments (unlike XNDS).  If the command is
	typed with a prefix argument of 0, it states the conditions outlined
	above and is otherwise a NO-OP.

XNDSail, given with a <cr> termination, lists all words that are preceded by
	certain catagory words, the default words being RECORD!CLASS,
	RECORD_CLASS and PROCEDURE.

	Having found a catagory word the program lists the first word following
	the catagory word and then ignores any following text until either a comma
	or a semicolon is encountered.  When a semicolon is encountered the search
	for a new catagory word is resumed.  If, on the other hand, a comma is
	encountered (not however within parens) then the next word is taken as
	another example of the catagory and it is listed, preceded by a comma.
	Listings following different catagory words are saparated by spaces.

	One additional category may be specified by typing its name after a
		space following the command name and terminating it by a <cr>.
	Up to 4 new categories may be specified with the categories after
		the first one replacing the default categories, one by one.
		To retain some default categories the list is terminated by a <cr>
	If the typed list of categories is terminated by ⊗<cr> then only the
		typed categories are used, and the default ones are eliminated.
	If the command is terminated by ⊗<cr> without any typed category names
		then the original default categories are reinstated.
	If given with a prefix argument of 0 this command will accept any typed
		categories and then will list the categories that are in effect
		without generating a text line.

∂1/21/77 -- Line MARKS now stay with the right lines during αβXAPPEND, β<FF>
and αβD (as applied to an in-core FF) operations.  They are still adversely
affected by XBREAK, XJOIN, XJUST and related commands.

∂1/17/77 -- Two very old bugs fixed:  one in free storage routines and one
in directory line maker (called when you change first line on page or edit
/R an unformatted file).  Also, ∃ command now always reports the index
number of the Home file.

∂1/15/77 -- MARKS on deleted or attached lines are now moved to the first line
after the deletion or attachment. XCANCEL restores marks with the restored page,
of course, only if the marks had been previously saved by an αβ. command or by
switching pages.

∂1/12/77 -- The substitute command now handles long lines and will not let
you substitute for a CR (found, for example, by the use of the "any
delimiter" symbol "|").

∂1/8/77 -- Two new commands XTIN and XSIN have been added.  TIN puts
Tabs IN, in place of spaces when this will save space and when it is
allowable.  This may make it possible to save space on the disk, 
providing, of course, that the TIN command is followed by an XBURP
command.  SIN puts Spaces IN, in place of TABS.  See page 19 for details.
Either command may take an argument, with the default value being the entire
page or ATTACHment.

∂1/5/77 -- A bug in XBREAK has been fixed.  If an attempt is made to break
a line in the middle of a TAB the break precedes the TAB except for the
unusual case where the first character is a TAB and the BREAK value has been set
at less than 8.

∂11/15/76 -- New command ⊗XEXACT causes searches to distinguish case of letters.

The new extended command ⊗XEXACT causes any subsequent searches to
distinguish between upper and lower case letters.  Searches will succeed
only if the searched text contains the same cases of letters as given in
the search string.  The command ⊗-⊗XEXACT will disable this feature and
thus cause searches to ignore the case of letters.

Also, the default paragraph indent for the justification commands has been
changed back to its original value of zero (it had recently been 4).

∂ *** FOR OLDER NEWS ABOUT E, SEE P. 33. ***

INDEX of commands.

Read α as CONTROL, β as META, ⊗ as EITHER CONTROL OR BOTH CONTROL AND META
N=Normal, I=line-Insert, E=line-Edit, A=Attach, X=eXtend.
# stands for any decimal number

Command		 Meaning		       Mode	Page

<form>	Go to next windowful (same page)	N	 7
⊗<form>	Go to next windowful (always)		N	 7
β<form>	Insert an in-core pagemark		N
<vt>	Go back a windowful (same page)		N	 7
⊗<vt>	Go back a windowful (always)		N	 7

<cr>	Move arrow to next line			N	 7
	 first close line (if in LINE-EDIT)	E	 9
α<cr>	Same line
	 first close line (if in LINE-EDIT)	E	 9
	 close line and leave Line-Insert mode	I	11
	 cursor to found location (after find)	N	13
β<cr>	Insert <cr>				N	 9
	 first close line (if in LINE-EDIT)	E	 9
αβ<cr>	Enter LINE-INSERT mode			N,E	11
<bs>	Move arrow up a line			N	 7
	Move cursor left a character		I,E	 9	Line editor command
	 also erase if at end of line		I,E	 9	Line editor command
α<bs>	Same as <bs> but no erase
β<bs>	Erase char to left			I,E	 9	Line editor command
	Move arrow up a line			N	 7
αβ<bs>	Move arrow up a line always		N	 7
	 first close line (if in LINE-EDIT)	E	 9
<alt>	Abort command				N,X
	 restore line to original condition	E	 9
<esc>I	Terminate multi-page FIND		X	13
	Terminate macro expansion		N	25
	Terminate wait on delayed V command	N	 6

Command		 Meaning		       Mode	Page

⊗A	Attach 1 line				N	10
⊗+⊗A	Add to A				A	10
⊗#⊗A	Attach # lines				A	10
⊗B	Glitch screen up from Bottom		N,A,E	 7
⊗#⊗C	Copy # lines into attach buffer		N	10
αD	Delete char				E	 9
αβD	Delete line				N	 7
⊗E	Exit or leave ATTACH mode		N,A	 7
αF	Find string (delimiters not required)	N	13
αβF	Find word (must be delimited)		N	13
⊗G	Unused
⊗H	Go to Home file				N 	15
αI	Enter Insert mode			N,E	 9
αβI	Enter line-Insert mode			N,E	 9
⊗J	Jump arrow line to top of scr		N	 7
⊗-⊗J	Jump arrow line to bot of scr		N	 7
⊗#⊗J	Jump arrow line up # lines		N	 7
⊗-⊗#⊗J	Jump arrow line down # lines		N	 7
αβK	Kill attached lines			A	10
⊗#⊗L	Go to Line #				N	 7
αM	Go to next Mark				N	 8
αβM	Make Mark				N	 8
⊗-αβM	Clear Mark on current line		N	 8
⊗0αβM	Clear all Marks				N	 8
⊗N	Unused
⊗O	Unused
⊗P	Go to next Page				N	 6
⊗-⊗P	Go to previous Page			N	 6
⊗#⊗P	Go to Page #				N	 6

Command		 Meaning		       Mode	Page

⊗Q	Copy line above				N	 9
αR	Repeat line editor αS or αK cmd		E	 9
αβR	Replace attached lines			A	10
αS	Skip to next char typed			E	 9
⊗T	Glitch screen down from Top		N,A,E	 7
⊗U	Move arrow Up a line			N	 7
αV	Redraw screen (without clearing)	N	 6
αβV	Clear and then redraw screen 		N	 6
⊗W	Move to next Window			N	 7
⊗X	Enter eXtended command next		N	19
⊗Y	Call macro				N	25
⊗Z	IMLAC command				N	28

⊗∂	Operate on message with nxt cmd		N	24
⊗ε	Switch to given file in READWRITE mode	N	15
⊗λ	Switch to given file in READONLY mode	N	15
⊗π	Unused

⊗∃	Show names of files in fileswitch list	N	15
⊗0⊗∃	Zero fileswitch list			N	15
⊗*	Repeat last ⊗F or ⊗XFIND command	N	13
⊗\	Repeat last substitution command	N	13

αβ.	Write out current page			N	 7
⊗?	Switch to the file E.ALS[UP,DOC]/R	N	15
⊗;	Move cursor straight up			E,N	 7
⊗:	Move cursor straight down		E,N	 7
⊗(	Find (					E,N	22
⊗)	Find matching )				E,N	22

Command		 Meaning		       Mode	Page

⊗↑	Move cursor to end of line above	E,N	 7
⊗↓	Move cursor to end of line below	E,N	 7
⊗↔	Return to place ( ) or ↔ was given	E,N	21
⊗←	Shift line left				N	17
⊗→	Shift line rght				N	17
⊗>	Move arrow down 4 lines			N	 7
⊗<	Move arrow up 4 lines			N	 7
⊗≥	Move arrow down half a screen		N	 7
⊗≤	Move arrow up half a screen		N	 7
⊗∧	Move arrow to top of screen		N	 7
⊗∨	Move arrow to bottom of screen		N	 7

Command		 Meaning		       Mode	Page

ALIAS		Change ALIAS
ALIGN
ALINE
APPEND
AUTOBURP
BACKGO
BEEPME
BREAK
BURP		Burp current page
CANCEL
CENTER
CLOSE
CRUNCH
DDTGO
DEFINE
DELETE
DIRED
DPYALWAYS
DPYSKIP
DRAW
DRD
ENTER
EPSILON
EXIST
FIND
GORPG
INDENT
INSERT
JFILL
JGET
JLEFT
JOIN
JUST
LAMBDA
LINCNT
LOOKUP
LPAREN
M
MAIL
MARK
MSG
PAREN
PARTIAL
PPSET
PROTEC
QUIT
READONLY
READWRITE
REMIND
RPAREN
RSYS
RUN
SAVE
SEND
SIN		Spaces IN
SJFILL
SJUST
SPOOLC
TELLME
TIN		Tabs IN
TJFILL
TJGET
TJUST
TMPCOR
TV
TYPE
UPDATE
XSPOOL
Abbreviations and explanation of E documentation.  Credits.

This version of the E  manual is intended for on-line use  by the normal
user. It may be referenced at any time while editing another file simply
by typing a <CONTROL>? command. One may always return to  one's original
file by typing the <CONTROL>H command. 

   A  simplified form of  this manual  for the beginner  is available by
typing HELP ETEACH with a carriage return to the  system.  This copies a
file  named TEACH into  one's file area  and allows  one to read  it and
modify it for practice. 

   This is p. 4 of E.ALS[UP,DOC]   (see  the  top line with  asterisks). 
Page 1,  the "directory" page,  is automatically prepared  by E,  and in
this case has been planned to be of maximum  help to the user.  There is
also an Index of Commands on p. 3.

ABBREVIATIONS used in this manual and in TEACH to characterize commands.

   α     means hold the "CONTROL" key down while typing a character.
   β     means hold the "META" key down while typing a character.
   αβ    means hold both "CONTROL" and "META" keys down while typing.
   ⊗     means use either α or αβ with the next character.

   Most commands are single characters with one or both of the two keys.

		Additional abbreviations
   <cr>    carriage RETURN key.			<lf>    LINE feed key.
   <tab>   TAB key.				<alt>   ALT-mode key.
   <bs>    Back-Space key.			<form>  FORM-feed key.
   <vt>    the VT key.				<clear>	the CLEAR key.
   CURRENT means the current line (normally with an → or ↔ on the left).


Credits.

   Dan Swinehart wrote TV,  the original  version of the display editor,
and created  the original version of TEACH.   Fred Wright wrote the FAIL
version of  TV  (called E).   Brian  Harvey  modified TEACH  to  reflect
differences  between E  and  TV.   Arthur Samuel  and  Brian Harvey  are
responsible  for this  version.  Address all  comments and  questions to
Samuel, who is currently trying to fix the remaining bugs in E.

Disclaimer.

   An attempt has been made to present a coordinated view of E.  To this
end some simplications have been made.  The experienced user may develop
techniques that are  not described in this  manual.  Any outright errors
should, however, be called to our attention.
General remarks.

    E  is  a page  oriented  editor  designed  for use  with  a  display
terminal. It brings one page of the text into core, as requested, and it
displays a portion of this page as if through a window.  A  line pointer
and an underscoring  cursor mark the position in the  text where editing
is  to occur.   Special commands allow you  to go from  page to page, to
move the window up or down on the page and to move  the line pointer and
cursor as desired.

    A window  of text on the  screen is preceded by a  header line which
contains a row of  asterisks, (if the window starts at  the head of  the
page) and information as to the Page being viewed, the name of the file,
the  state of the file  (whether opened in  read only mode  or not), and
certain letters that indicate  the state of the editing.   If the window
starts at other than  the first line on the page, then the asterisks are
replaced with dots and the beginning line number is also displayed.

The window is followed  by a trailer line which reports  the location of
the  arrow, the  total  number of  lines on  the  page, the  page number
(repeated for convenience), the  total number of  pages in the file  and
finally some information as to the state of the page with respect to the
number of records that it currently occupies on th disk and will occupy.
The number of  current records is  followed by the  letter R. The  final
item may be either the number of characters shy (shown with a - sign) or
the number of characters in excess (shown with a + sign) over the  space
allotted. If  this number would  exceed 640 (a  full record), it  is not
shown but it is replaced by the number of records followed by either the
letter B (for bloat) or X (for excess).

Extra records  indicated by  a "B"  on the  trailer line  will never  be
removed  automatically,  although  they  can  be  removed by  the  XBURP
command.  The trailer  line contains asterisks if  the last line of  the
page appears on the page and dots if it does not.

     E  does not  make a  separate disk  copy of  the file  being edited
unless  requested to do  so by the  use of a  special command (described
later), so take care  or you may damage  a file that belongs  to someone
else. 

    E achieves its speed (1) by using the system's  line-editor and only
changing the core copy of the text on the completion of a line edit, and
(2) by updating  the disk copy of the  page only on the completion  of a
page edit  (automatically effected by moving to  another page).  You can
undo an entire page of  incorrectly made modifications by cancelling  an
update, but unfortunately, you  can also lose an entire  page of desired
modifications  or additions if  the system should  go down unexpectedly.
Always remember that the text shown on the display may not, and usually
does not, mirror the true state of the actual text on the disk. 

    E is best understood by recognizing that it operates in a variety of
different modes and that  many commands are  appropiate only to  certain
modes. In fact some commands have quite different effects depending upon
the  mode that  E is  in at  the time that  the command  is given.

    The dominant mode is the NORMAL mode.   This allows for page, window
and  line marker movement  commands and  commands which enter  the other
modes.
PAGE CHANGING, APPENDING, DIVIDING and COMBINING commands.

PAGE CHANGING commands.

   PAGE-CHANGING commands are single characters typed with the CONTROL key
held down or with both the CONTROL and the META keys held down.  They may
take modifiers as shown below.

   ⊗P       Go to the next PAGE.
   ⊗7⊗P     Go to page 7 if possible otherwise to the last page.
   ⊗+⊗7⊗P   Go foreward 7 pages if possible, otherwise to the last page.

   ⊗-⊗P     Back up to the previous page.
   ⊗-⊗3⊗P   Go backward 3 pages if possible otherwise to the first page.

   It is good practice to  limit the page size to less than  150  lines.
This eases the load on  the editor and makes the directory  of more use.
The directory will be much more useful if you also make it a practice
to start each page with a suitable comment, in the case of code perhaps
containing a list of all labels to be found on the page.  You can than
use a special search procedure (explained on p. 13) to expedite the 
location of any desired item that is so listed.

   The following commands leave the page  unchanged but they refresh the
screen.

  αV	  Redraw the screen WITHOUT first clearing it. (The fastest).

  αβV	  Clear the screen and then redraw it. (This is slower).

  ⊗3⊗V	  Redraw screen as above then wait 3 seconds before continuing.
	  <esc>I will terminate the wait.

PAGE APPENDING commands.

It is possible to have more than one page in core at the same time.  This
technique makes it possible for two pages to be edited together at the
same time while retaining all of advantages of short pages, as noted above.
To do this one makes use of the EXTEND command ⊗XAPPEND<cr> command (see
page 19 for full details regarding EXTEND commands).

αβXAPPEND<cr>	Append the next page to the page or pages that are
		currently in core so that the two or more pages may be
		viewed and edited togather.

When two or more pages are in core, the page moving commands, as described
above, become some what  more speciallized, in that  a distinction is  now
made between page  moving commands  typed with  the CONTROL  key only  and
these same  commands when  both  CONTROL and  META  keys are  used.   This
distinction can be shown by the two examples noted below.

  αP	Move to the next page and if this page is in core at the time do
	not release other in-core pages.

  αβP	Move to the next page and DO release all other pages from core.

PAGE DIVIDING commands

A page may be split  into two pages in either  of two ways, one way
leaving only the newly created page in core and the second way leaving
both pages in core togather.

With either form of the command  the current arrow line becomes the  first
line of the newly created page. (See the next page for arrow moving.)

    An apparent exception to this occurs if there is an attachment  at
    the time  when  the  command  is issued,  but  in  this  case  the
    attachment is  first  released,  where-upon its  first  line  then
    becomes the  arrow  line and  then  the newly  requested  page  is
    formed.

αβXMARK<cr>	Split the current page into two pages with the arrow line
		as the first line of the new page and retain only this
		newly created page in core and displayed.

 β<form>	Split the current page into two pages with the arrow line
		as the first line of the newly created page and retain
		both pages in core.

PAGE COMBINING commands

Two pages may be combined into one page in either of two ways.  If only
one page is in core at the time the following command may be used

 αβXDELETE<cr>	Delete the carriage return and line feed at the end of
		the current page adding the text that was formerly on 
		the next page to the present in-core page.

If two ore more pages are in core at the time the above command is
given the added text will be appended to the last in-core page.
To delete a page mark that divides two pages that are already in core
togather one moves the arrow to the on-screen representation of the
page mark separating the two pages and gives the following command

  αβD		When this command is given with the arrow pointing to an
		on-screen page mark, the page mark is deleted and the two
		adjoining pages are combined into one page.

WINDOW and ARROW moving commands.

These are Normal-mode commands. The CURRENT line is marked by an arrow
and is the line that would be processed if one were to enter the line-
editor. In the descriptions below it will be referred to as the arrow
line.

The first set of commands control the position of the window on the page.
The arrow is usually repositioned by these commands.

 <form>	  Advance the window, that is, move the last line to the top. This
	  command (without control bits) does not advance the window beyond
	  the range of the in-core text.
	  An argument may be used (typed with control bits and preceding
	  the <form) to define the number of windowfuls to be advanced.
	  ⊗W is an older (still functioning) command to do the same thing.

 ⊗0<form> Advance half a window.
	  ⊗0⊗W is an older command to do the same thing.

 αβ<form> Advance the window as defined above but replace the in-core text
	  by the next page if the the end of the in-core text is already
	  within the window.

 β<form>  This command is NOT a window moving command (see page xx for its
	  explanation).  Do not confuse it with <form> or αβ<form>.

  <vt>	  Move the window up so that the first line becomes the LAST. This
	  is the reverse of <form>. This command without control bits does
	  not back up beyond the range of the in-core text.
  
 ⊗0<vt>	  Back up half a window.

 αβ<vt>	  Move the window up so that the first line becomes the LAST. This
	  command (with both control bits), will cause the in-core text to be
	  replaced by the next earlier page if the start of the in-core text
	  is already within the window.

The following commands move the position of the window on the page, leaving
the arrow so that it still points to the same line of the text, if this is
possible, otherwise causing it to point to the first or last line on the
window.

   ⊗J     Move (JUMP) the window so that the arrow line is at the top.
   ⊗0⊗J   Move (JUMP) the window so that the arrow line is at the middle.
   ⊗-⊗J   Move (JUMP) the window so that the arrow line is at the bottom.

   ⊗3⊗J   Move (JUMP) the window so that the arrow line is 3 lines higher
	  in the window (with the top as the limit).
  ⊗-⊗7⊗J  Move (JUMP) the window so that the arrow line is 7 lines lower
	  in the window (with the bottom as the limit).

          Note that  the  default argument  for the  J  commands is,  in
          effect, infinity, with the argument 0 having a special meaning
          rather than being a undefined.

   ⊗T     Glitch the screen so that 4 additional lines are displayed at the
	  top of the screen. An argument, if used, is in terms of units of 4.
   ⊗B     Glitch the screen so that 4 additional lines are displayed at the
	  bottom of the screen.

The following commands move the arrow with respect to the window, without
moving the window.
   ⊗∧	  Move the arrow to the top line in the window.
 ⊗3⊗∧	  Move the arrow to the line that is 3 down from the top of the
	  window.
 ⊗9⊗9⊗∧	  Since this would be off of the window the arrow is simply moved to
	  the bottom of the window. (The next command does this more easily).
   ⊗∨	  Move the arrow to the bottom line in the window.
 ⊗4⊗∨	  Move the arrow to the line that is 4 up from the bottom of the
	  window.

The following commands move the arrow with respect to the text.  Should this
require the arrow to leave the currently displayed window, the window is
shifted, usually so that the arrow line will be in the middle of the window.

   <cr>   Move the arrow down a line.  Note: no control keys used.
   ⊗>     Move the arrow down 4 lines.
   ⊗≥     Move the arrow down 1/2 screen.

   <bs>   Move the arrow up a line (cannot be typed ahead on non-displays).
   ⊗U     Move the arrow up a line (works better than <bs> on non-displays).
   ⊗<     Move the arrow up 4 lines.
   ⊗≤     move the arrow up 1/2 screen.

   ⊗L	  Move the arrow to the first line of text on the page.
  ⊗5⊗L	  Move the arrow to the 5th line of text on the page.
  ⊗∞⊗L	  Move the arrow to the row of asterisks at the end of the page.

The following comands move the arrow with respect to the text, as above,
AND  they enter the LINE-EDIT mode.  They may also be given when in the
LINE-EDIT mode (see p. 9) but they then require αβ with the arguments.

  ⊗↑        Enter the LINE-EDIT mode with the cursor at the end of the
	    previous line.
  ⊗3⊗↑      Enter the LINE-EDIT mode with the cursor at the end of the
	    third previous line.
  ⊗↓        Enter the LINE-EDIT mode with the cursor at the end of the
	    next line.
  ⊗6⊗↓      Enter the LINE-EDIT move with the cursor at the end of the
	    sixth line forward.
   
The following commands remove text lines from the page.

   αβD    DELETE the entire CURRENT line.
	  This takes both α and β since αD has a different meaning.
	  Use with caution, the only way to undo a line deletion is
	  to cancel all corrections to the current page that have
	  been made since the last disk update.

   ⊗4αβD  Delete 4 lines starting with CURRENT.

Two NORMAL-MODE commands that may be used to save an edited page are:

   ⊗.	  Write the current page (as corrected) into the disk file.
	  Note, this is done automatically with a change page command.
   ⊗E     Do a ⊗. and then EXIT to the system monitor.

   Most of the NORMAL-MODE commands require the use of the CONTROL key
and perhaps the META key.  <cr>, <vt> and <form> are exceptions.
LINE MARKING commands.

E provides the facility of  marking up to 23  line locations with a  rapid
way to return to these locations  by using the following commands.

Marks are relative with respect to the line locations on the page but  the
stored values are corrected for line insertions and deletions and for page
mark insertions  and deletions  so that  the marks  appear to  be  sticky.

MARKS  do not accompany attachments  and they do not disappear when  lines
are deleted.  Instead,  marks on lines  that are attached  or deleted  are
moved to the first remaining line after the attachment or the deletion.

The XCANCEL command resets the marks  for the page being cancelled to  the
values they had when this page was  last saved by an αβ. or page  changing
command.  Incidentally, if all  marks, including those  on other than  the
current page, are removed by an  αβ0αβM command, they may all be  restored
by the XCANCEL command, (if this  is done before any page saving  command)
with, of course,  the accompanying restoring  of the text  of the  current
page.

Marks are saved during ⊗ε, ⊗λ, ⊗? and ⊗H file-switching operations and are
restored on returning (by ⊗H or number) to a previously marked file.

   αβM	  Mark the CURRENT location,  recording  page number
	  and line number.

  αβ0αβM  Erase all MARKS.

αβ-αβ0αβM Erase all MARKS on the current page only

  αβ-αβM  Erase the MARK on the current line only.

   αM     Go to the next MARK (cyclicly).

   α-αM   Go to the previous MARK (cyclicly).

   α2αM   Go the the second Mark forward from here (cyclically).

  α-α3αM  Go the the third Mark before the current location (cyclically).
LINE-EDIT commands.

   E uses  the line-editing commands  that are  a part of  the operating
system.  There is a limit (usually 133) to the number of characters that
the line editor can handle.

   Typing a character without a CONTROL or META key will normally invoke
the  line editor  and the character  is typed  into the CURRENT  line. A
cursor will appear  under the first  character in the  line and in  that
position where  the next typed character  will go. A character  so typed
overwrites  the character that was at the  cursor's position.  E will be
in the LINE-EDIT mode.

   A word of caution- it is usually safe to  continue typing on entering
the LINE-EDIT mode without waiting  for the system to catch up.  Most of
the earlier bugs that caused this to fail have been fixed but it is wise
to look before giving a carriage return and if anything is amiss to type
<alt> and start  over again.

   When the  arrow  appears to  point at  the  bottom row  of  asterisks
(which, of course,  is not in the  text) E will accept  anything that is
typed  as an  added line of  text. The  asterisks temporarily  disappear
only to reappear below the  new line on the completion of  the addition,
and E reverts to the NORMAL mode.

   When in the  LINE-EDIT mode a <cr>  will terminate the mode  and move
CURRENT  to the next  line.  A  α<cr> will terminate  the LINE-EDIT mode
without moving  CURRENT.   Remember  that the  line corrections  do  not
appear in the core image until you leave the line-editor mode.

   Also remember that the  version on the disk still does  not show your
corrections  until  a  disk update  has  been  initiated.  When in  this
intermediate state the letter W will appear at the end of the title line
(with asterisks or dots at the top of the window, meaning that something
is yet to be written.

   If your change will  require the directory to be  changed,  this will
be shown by the letter D in this top line.  The letter X can also appear
if the change requires a in extension in the space  on the disk assigned
to the current page.  The letter X also appears on the trailer line with
a number specifying the number of extra records (of 128 words) that will
be required.  If no extra records are required this X is replaced by the
letter R following a number specifying the number of records that the page
occupies or will occupy on the disk.  After a deletion the letter B may
appear in place of this R or X, again preceded by a number that specifies
the number of all-null records that the page will contain.

   By the way,   window moving commands do not  automatically update the
disk, whereas page changing commands always do an update.

   Most  of the line editing  commands listed below will  also enter the
LINE-EDIT mode from the NORMAL mode.

   If you make a mistake and  perhaps lose some valuable information hit
<alt> rather than <cr> and your data will reappear as if by magic.

The following commands move the cursor without changing the line.

   α<space>   Move the cursor  to the right 1 space.
   α4α<space> Move the cursor 4 spaces  to the  right.
   α<bs>      Move the cursor to  the left  1 space.
.  α5α<bs>    Move the cursor 5 spaces to the left.
   α<tab>     Move the cursor to the end  of the line.
   α<form>    Move the cursor to the start of the line.

   αS then <char>    Move the cursor to the next occurance of <char>.
   α3αS then <char>  Move the cursor to the 3rd next occurance of <char>.

The following commands allow you to insert or delete characters.

  β<char>   Make  room and  insert  <char>  ahead  of the  cursor
	    position.

   αD       DELETE a character and move the rest of the line to the
	    left.  If at the end of the line,  this will append the
	    next line to the current one.  ETV will prevent this from
	    being done if the resulting line would be too long for
	    the line editor.
  α4αD	    Delete 4 characters starting at the cursor position but do not
	    append the next line should the count exceed the number of
	    remaining characters in the line (unless command is given when
	    cursor is at the end of the line).

  αK<char>  KILL the line starting with the cursor position up to but
	    not including the character typed. Do nothing if the no
	    such character is found.
  αK<cr>    Kill the rest of the line starting with the cursor position.

  α4αK<char>  KILL the line up to the 4th occurrance of the character.

The following commands allow you to leave the LINE-EDIT mode.
  α<cr>     Accept the line, leave LINE-EDIT mode but do not move the arrow.
  <cr>      Accept the line, leave LINE-EDIT mode and  move the arrow down.
  β<cr>	    Insert a <cr> before the cursor position and leave LINE-EDIT mode.
  αβ<bs>    Accept the line, leave the line-edit mode and move arrow up
	    one line.

For completeness  the  <cr> and  <bs> commands  are  listed togather  to
remind  you  that they  do  quite different  things  depending  upon the
associated control keys.

  <cr>      Accept the line, leave LINE-EDIT mode and  move arrow down.
  α<cr>     Accept the line, leave LINE-EDIT mode but do not move arrow.
  β<cr>	    Insert a <cr> before the cursor position and leave LINE-EDIT mode.
  αβ<cr>    Break line at cursor and enter Line¬Insert mode with the new
	    empty line between the two segments of the old line.

  <bs>      BACK SPACE, deletes like β<bs> if at the end of the line,
	    otherwise just moves the cursor to the left like α<bs>.
  α<bs>	    Move cursor to the left WITHOUT deleting.
  β<bs>     Delete the character to the left of the cursor position.
  αβ<bs>    Close line and move arrow up a line.

The following commands allow you to enter or leave the INSERT and the
LINE-INSERT mode.

  αI	    Enter INSERT  mode (like holding META down continuously).
	    Everything that  you type  (including carriage returns)
	    will be inserted until you type another line command.
	    Any LINE-EDIT command will cause one to leave the INSERT
	    mode, for example, the α<space> command.
  αβI	    Break line at cursor and enter Line¬Insert mode with the new
	    empty line between the two segments of the old line.
  α<cr>	    Accept the line, leave Insert or Line-insert mode but do not 
	    move arrow.
  <alt>     Restore the line to it original condition and leave the
	    LINE-EDIT mode. (See p. 11 for its action when in LINE-INSERT mode.)

The following commands allow you to leave the line-edit mode, move to another
line and reenter the line-edit mode, all with one command.

  ⊗↑        Accept the line, then move to the end of the previous line.
  αβ3⊗↑     Accept the line, then move to the end of the third previous
	    line.
  ⊗↓        Accept the line, then move to the end of the next line.
  αβ6⊗↓     Accept the line, then move to the end of the sixth line
	    forward.

  ⊗;        Accept the line, then edit the previous line from the same
            display position as that from which this command was given.
  αβ3⊗;     Accept the line, then edit the third previous line from the same
            display position as that from which this command was given.
  ⊗:        Accept the line, then edit the next line from the same
            display position as that from which this command was given.
  αβ6⊗:     Accept the line, then edit the sixth line forward from the same
            display position as that from which this command was given.


    The above commands work in both NORMAL and LINE-EDIT modes, as does
the following command which allows you to copy a line and then edit it.

  ⊗Q       Insert a copy of the line just above CURRENT and open it
	   for editing (i.e., enter LINE-EDIT mode in new line).

   If you are  editing a line  and type something  that the line  editor
does  not understand it  will usually  ignore the error  (after thinking
about it for a moment) but don't bank on this too heavily because it can
fail.

   If you type a legal ⊗ command (some are forbidden) when in  LINE-EDIT
mode the line will be accepted as edited and the command will be carried
out.
  (Typing ⊗. in LINE-EDIT mode returns to LINE-EDIT mode automatically
without writing the page because this command is illegal in LINE-EDIT mode.)

   The α<cr> command, that works to recall a line from the system buffer
in the system's monitor mode, is replaced by the ⊗Q command as described
above.
Attach and Copy commands: ⊗A ⊗C

   The ATTACH and COPY commands permit blocks of lines or copies of them
to be moved up and down on the page or from page to page, as desired.

   The ATTACH command removes one or more  contiguous lines of text from
the core  image of the page and places them  in a special attach buffer.
The lines are still displayed on the screen in their original position.

    Note that if more than 8  lines are attached, then only the first  4
lines and  the last 3 lines  are shown so that  one can see a  few lines
both  before and following the attached lines  to be certain as to their
relationship to the rest of  the page. The attached lines are  marked by
vertical bars (thus |) at the left.

    The apparent  position of the attached lines can  be made to move up
or down on the page or from  page to page with the usual  CURRENT-moving
commands to prepare for a final command  which will deposit the attached
lined  back into the core  image of the text  at the indicated position.
Perhaps this  can be made  clearer by  remarking that  the CURRENT  line
designation is  actually attached to  the line following the  section of
text that has been removed (although the → does not appear). What one is
actually doing when  one appears to be  moving the attached lines  is to
move CURRENT around and E  cleverly always displays the attach buffer on
the screen just above CURRENT, where it will in fact be put if one gives
the deposit-line command.

Basic commands.

  ⊗A     ATTACH the CURRENT line and mark it with a "|".
  ⊗3⊗A   ATTACH 3 lines starting with CURRENT and mark these with "|'s".
	 If a number greater than 8 is used, (for the 3 in the example),
	 only the first 4 and the last 3 lines are shown.  A row of dots
	 is used to indicate that some attached lines are not shown.

  ⊗E     Deposit the attached lines where displayed and Exit ATTACH mode.
	 Note:   this command has a different meaning when one is NOT in
	 the ATTACH mode (it then means EXIT from E). Don't stutter when
	 typing it. Give the system time to react.
  αβR    REPLACE the attached lines in their original location and leave
	 the ATTACH mode.
  αβK    KILL the attached lines (they go away beyond recall) and exit
	 from the ATTACH mode. Note that αK does not work (for safety).

	 If you make a practice of using the CONTROL key only, when in
	 the ATTACH mode, (when it works) you will avoid the danger of
	 accidentally killing an attachment, if you mean to hit a J or
	 an L and hit a K instead.

  ⊗C     Make a COPY of the CURRENT line and ATTACH this copy.
	 If there is already something in the ATTACH buffer when this
	 command is given then the entire attachment will be deposited and
	 re-copied.  This provides a convienent method of making 
	 multiple copies of any desired portion of text.
  ⊗5⊗C   Make a COPY of 5 lines starting with CURRENT and ATTACH these.


Relative arguments.

  Relative-argument commands add or remove lines from the end of the
  attach buffer thus:

  ⊗+⊗A    Attach 1 more line beyond those already attached.
  ⊗+⊗3⊗A  Attach 3 more lines beyond those already attached.
  ⊗-⊗A    Detach 1 line from the end of those already attached.
  ⊗-⊗2⊗A  Detach 2 lines from the end of those already attached.

  ⊗+⊗C    Copy 1 more line beyond those already attached.
  ⊗+⊗4⊗C  Copy 4 more lines beyond those already attached.
  ⊗-⊗C    Delete (kill) 1 line from the end of the attached set.
  ⊗-⊗2⊗C  Delete (kill) 2 lines from the end of the attached set.

   If the apparent position of the attached lines have been moved before
these relative-argument  commands are given then additions and deletions
are made in terms of the apparent new location. This gets a bit hairy in
the case of  deletions but it is  a very useful device  for assembling a
set of copied lines from several different places.

   Note that a single attach command is only effective to the end of the
current page, and an attachment is deposited all on the same page.

   A word of  warning,  a hazard  is involved in using ⊗A  to move lines
from page  to page.  The attached lines can be lost if the system should
crash during the interval between the removal of the attached lines from
one page  and the final  updating of the  page to which  they are moved.
This hazard can be  avoided by copying  the lines rather than  attaching
them  and  then  going  back and  deleting  the  original  copy.    This
precaution is  hardly necessary for a  line or two but it  is a wise one
when you are moving large blocks of text.

   Moving lines from page to page takes time, so don't get impatient.

   This is a good place to comment on the RIPPLING report, that  you may
have noticed in the scratch-pad lines  at the bottom of the screen. This
notice  appears when a  major rearrangement of the  text between records
becomes necessary. This also takes time.
LINE-INSERT mode.

   While one can add text  at the bottom of a page by  simply moving the
CURRENT  marker  so  that it  appears  to  point at  the  bottom  row of
asterisks (not to dots),  a special mode is  used to insert lines  of
text at other points. As a matter  of fact it is usually better to enter
this special  LINE-INSERT mode if one is to type several lines even when
at the end of a page.

   When in the LINE-INSERT  mode, typing a carriage return,  inserts the
carriage return into  the text, writes the line into  the core image and
enters the LINE-EDIT mode for  the next line to  be typed. Care must  be
taken to leave the LINE-INSERT mode properly or else undesirable letters
may appear in your text.

   The fact that the editor is in the LINE-INSERT mode is signalled by a
double arrow CURRENT line marker ↔ in place of the right arrow →.

To enter the LINE-INSERT mode:

  αβ<cr>  Enter LINE-INSERT mode, insert a blank line ahead of the text
	  at CURRENT and mark the new line with the double arrow ↔.  If
	  you are in the middle of a line, this will break the line into
	  two separate lines, with the  ↔  at the start of a blank line
	  between these two separate lines as newly created.

While in LINE-INSERT mode:

  <cr>    Accept the line and move the ↔ to a newly inserted blank line.

  α<cr>   Leave the LINE-INSERT mode and accept the line in question.

  αβ<cr>  Insert a blank line (if given at the start of a line).  If you
	  are in the middle of a line, this will break the line into two
	  separate lines, and  position the cursor to be ready to accept
	  text on an inserted blank line  between the two portions.   If
	  you are at the end of a line this will be accepted as a simple
	  <cr> as above.

  αβ<bs>  Leave the LINE-INSERT mode but move the →  back to the line a-
	  head of the accepted line.

  <alt>	  If the cursor is not at the end of the line being edited, or if the
	  line is still empty, then delete the line and leave the LINE-INSERT
	  mode with the arrow at the next line.
	  If the cursor is at the end of the line then leave the LINE-INSERT
	  mode without deleting the line and with the arrow pointing to the
	  current line.
Handling very long lines. XBREAK and XJOIN.

   XBREAK will break lines at any specified column position by inserting
CRLFs.   The  column position  may  be specified  by a  numeric argument
following BREAK;  the default  BREAK  column is  originally 80  but  any
typed-in  column argument  overrides this  and is  sticky.   The command
takes effect  starting with the current line (as marked by the arrow) or
with the first  line of  the ATTACH buffer  if there  is an  attachment.
Breaks occuring within a  TAB are assumed to  precede the TAB, that  is,
the TAB goes at  the start of the  text on the next  line.  There is  an
exception to this if the break is set  at 8 or less and if a TAB  occurs
at the start of a line, when the  TAB will be placed on the first  line.
The current line position is not changed by this command.

   If XBREAK is given WITH  a preceding numeric argument, then that many
lines are broken (not, however, extending beyond the end of the page  or
attach buffer)  and each line  is broken as  many times as  necessary to
prevent any  resulting line from being longer  than the specified column
argument.

   If XBREAK is  given WITHOUT  a preceding numeric  argument, then  the
current line  (or the first attached  line) is broken ONLY  ONCE, at the
specified (or default) column position.

    The XJOIN command joins lines without introducing spaces for deleted
CRLFs.  XJOIN  will take  a preceding  numeric argument  specifying  the
number of lines to be joined  (default is 2 lines).  XJOIN takes  effect
at the current line or at the  first line of the ATTACH buffer and  does
not cross page boundaries, or the end of the attach buffer.  The current
line position is not changed by this command.

   Thus  XBREAK and  XJOIN can  be used together  to manipulate,  and to
allow editing of, very long  lines because these commands do not  change
any  text in  affected lines  except for  the deletion  or insertion  of
CRLFs.

SEARCH (or FIND) commands: ⊗F ⊗XFIND ⊗*

   The search can be specified in several different ways:

   1) The search can be for an alphameric  string that is separated from
the rest of the text by non-alphameric  characters or it may be for  any
string regardless  of its  surroundings.  Note  that the  FIND  commands
normally make no  distinction between  upper and lower  case unless  the
command XEXACT has been previously  given. After the XEXACT command  has
been given all subsequent FIND commands (including repeat FIND  commands
for specifying strings that had  previously been typed) find only  those
occurrences with  upper  and  lower case  letters  exactly  matching  the
specified string.  The command ⊗-⊗XEXACT restores the initial condition.

   For single-page searches the commands are:

   αβFSmith<cr>   Find just plain Smith or smith but not this string in
		  in $smith, in blacksmith or in Smithsonian. Note that
		  % and _ are accepted as alphamerics.
   αFSmith<cr>    Find smith as an isolated word or as part of a longer
		  string (in blacksmith for example).   The string will
		  be found even where not delimited by non-alphamerics.

   Note that no space is used between the F and the start of the string.

   For multi-page search commands are:

   αβXF Smith<cr> Find a delimited string.
   αXF Smith<cr>  Find the string regardless of surroundings.

   Note that CONTROL  and META keys are not  used with the F and  that a
space is required  between the F and the string.  Commands starting with
the  letter X  are  EXTEND  commands which  permit  more than  a  single
character to be used  for the command name, hence the need for the space
to mark its end.  In this  case the complete command name is FIND,  but,
since there  are, at present, no  other commands beginning with  F, only
the F needs to be typed.

   Multi-page searches, made  on files entered  /R, are carried  only as
far as the core directory has been extended.  To search the entire file,
one should first complete  the directory by  switching to the last  page
and then switch back to the desired starting page  for the search.   The
fact that the directory is incomplete is evidenced by the use of the "?"
in the trailer line, in lieu of the usual number, to show the total page
count ( thus, Page 13 of ? ).


   The delimited find command (αβF or αβXF) will not find an  occurrence
of the  search string that starts  in column 1 of  the current line, but
the non-delimited command (αF or αXF) will find such an occurrence.

   A string, once specified, is sticky; that is, one need not retype the
string  for   a  repeat  of  the  command.   The  search  string  for  a
within-a-page search is remembered independently from that for an EXTEND
search.  For  a repeat one repeats  the command up to  the string itself
and  then types the desired  termination (a <CR> as  shown above, or any
termination listed below).

   Special repeat  commands exist  which simplify  the repeated  search.
These  are easier  to  use than  the regular  repeat  command, described
above, but only the last executed type of FIND can be repeated.   Two of
the more  commonly used  terminations are  simulated by  using different
control keys with the * command symbol. 

     αβ*   Find the  next occurence of  the string  specified by the
  last FIND  command  (whether a  single page  FIND  or a  multipage
  XFIND).  Move the line cursor  to the found line  but do not enter
  the LINE EDITOR, that is, duplicate a normal FIND command  that is
  terminated  by a  <CR> only.   An  argument may  be used  (such as
  αβ1αβ3αβ*) to find the Nth occurence (the symbol ∞ counts as 510).

     α*    Find the  next occurence of  the string specified  by the
  last FIND  command  (whether a  single page  FIND  or a  multipage
  XFIND).  Leave  the line in the LINE  EDITOR as it would be  for a
  normal FIND command  terminated by a α<CR>.  If there is something
  in the ATTACH buffer, this is interpreted as an αβ* command.   See
  below for method of using an argument.

     ⊗4α*    Find the fourth occurrence of  the string specified  by
  the  last executed  FIND  command  (whether  a single  page  or  a
  multipage XFIND) and position the cursor under the first character
  of the found string (as it would be for a normal FIND command that
  is terminated by a α<CR>).  If this command is given from the line
  editor, the argument must be typed with both control keys  (αβ) to
  force activation of the line editor.

   2) The  following special symbols  may be used  in the  search string
with the  meanings noted. If  these characters  are desired as  ordinary
characters  in the  searched-for string  they must  be preceeded  by the
identity symbol ≡. 

  Symbol		Meaning

   ¬		The character that follows must not be in the string at
		this point but any other character will be accepted.
   |		Any delimiter (not one of $_% nor a letter nor a digit).
   ∀		Any character.
   ≡		The character that follows immediately after this symbol
		is not to be treated as a special symbol but it is to be
		included as a character in the searched-for string.  Use
		this to quote any of these special characters.
   ∞		Not at present implemented, but still must be quoted.
   ⊂		Not at present implemented, but still must be quoted.


   3) The action  that is to be  taken on the successful  termination of
the search  is specified by the delimiter  used to terminate the string.
The <cr>, used above,   moves the → to the  found line. A repeat of  the
Find command,  if given, will start  with this same line,  but after the
found string,, so that multiple occurrences of a string within a line can
be found.

Many of the cursor moving commands and substantially all of the LINE-EDIT
commands may be used as the terminating action-defining delimiter.

Some of the more important action-defining delimiters are:

   <cr>     Move CURRENT to the found line or report failure.

   α<cr>    Terminate, as with <cr>, but  move the cursor until it is
	    under the first character of the string.   Note that this
	    leaves E in the LINE-EDIT mode. A second FIND command can
	    however be given and the next occurrence will be found. If
	    a FIND command is terminated with <cr>, a α<cr> will still
	    move the cursor to the string.

   ⊗J       JUMP the line with the found string to the top of the
	    window.

   αβ<cr>   Enter the LINE-INSERT mode with the ↔ at a newly inserted
	    blank line ahead of the found line.

   αP       Make the search over the directory page  and then display
	    the referenced page with the line pointer at the top line.
		Note that one can give this command without having to
 		give an explicit command  to go to the directory page.
		If the search fails the current location is unchanged.

   αβP      Make the search over the directory page  and then display
	    the  referenced page  with the line pointer at the second
	    occurrence of the referenced string  (the first will be in
	    the first line of the page).

   αβ:	    Make the search over the directory page and then display
	    the referenced page with the line pointer at that line
	    which contains the referenced string as the label.

   ⊗A       ATTACH all lines starting with CURRENT up to and including
	    the line with the specified string.
	    If used with an EXTEND command and if the string is not on
	    the windowed page, the attachment will begin at the top of
	    the page on which the string is found.
	    Attachments do not cross page boundries.

   ⊗C       COPY all lines starting with CURRENT up to and including 
	    the line with the specified string.
	    See ⊗A above for restriction with an EXTEND command.

   αβD	    DELETE all lines beginning with CURRENT up to but not
	    including the line with the specified string.
	    See ⊗A above for EXTEND command restriction.
	    This is a very dangerous command so use it with caution.

   ⊗\       Terminate the searched-for string and prepare to accept a
            substitution string. The substitution string is then typed
	    in and may be terminated in any one of several ways.   For
	    details see String Substitution Commands on the next page.
	    Note that there is a special repeat command for this case so
	    do not try to use the repeat conventions that are used for
	    simple searches.

   <alt>    Abort the present command and cancel the string specification.

   4) The search can be for the first  occurrence of the specified string
or for the n'th occurrence.

   ⊗3⊗Fsmith<cr>  FIND the 3rd occurrence of SMITH.

   5) The <ESC>I command will terminate any FIND in progress at the end of
the page on which it happens to be searching, and it will report this page
number. This command is not intended for use with a single page F command
and it may give an incorrect message in this case on the termination of a
normal search.
SUBSTITUTION commands: ⊗\

String substitution commands are initiated by first giving a normal FIND
command   but  using  the   special  string   terminating  character  ⊗\
(back-slash).  This is then  followed by the substitution string  which,
in turn, is terminated by either  a simple carriage return (which may be
preceeded  by an argument, typed with control  keys) or by α<CR>.  Note,
many of  the  otherwise acceptable  Find  command terminations  are  not
meaningful with the substitution commands and are not allowed.

Please observe that  an argument before  the initial FIND  command means
find  the specified  occurrence before making  the substitution  while an
argument before the  final termination means  make the substitution  the
specified number of  times starting with the initial  arrow position (or
with the initially specified occurance, if there is an initial argument).

The prefered method for making repeated substitutions is to request an
initial single substitution and then to ask for the desired remaining
substitutions by the αβ\ command prefaced by an argument specifying the
remaining number of times the substitution is to be made.

Characters in the searched-for string that are  preceeded by the special
control symbols  ¬ and ≡ and all characters  that are represented by the
special symbol ∀ or by  the symbol |  (see p. 13 for the explanation  of
these symbols)  are treated as any  other character and are  deleted and
replaced  by the substitution string.   The "partial definition feature"
as implemented in SOS is not, at present available. 
The | symbol  in the  searched-for string  can not  be used to replace a
carriage return.

   Note. The  FIND command does  not find  the very first  delimited
   string on the  line to which the cursor is pointing (unless it is
   in fact preceeded  by delimiter).  This limitation  is of  little
   consequence for  the simple FIND  but it  is an annoyance  if one
   wants  to replace  all occurances of  a symbol  (or string) which
   happens to be the very  first symbol (or string) on a page.   One
   can introduce  an initial  space into the  first line or  one can
   introduce an initial blank line  temporarily and have the  cursor
   at this line.   The space or line  can then be removed  after the
   substitution.

In the rest of this write-up "all occurances" means "all except the very
first character or string on the line to which the cursor is pointing at
the time  that the command  is given  when the search  request is for  a
delimited string".


Sample commands.

  αβFSTRINGαβ\"String"<CR>	  Find the first occurance of the
		string STRING,  whether typed  in  lower or upper
		case letters  and  replace it by the substitution
                string as typed, that is, enclosed in  quotes and
                with the initial letter only  in CAPS.  Limit the
                search  to the current page starting at th cursor
                location. 


 αβFSTRINGαβ\"String"αβ∞<CR>	Find all occurances of the string
                STRING,  whether typed  in  lower or  upper  case
                letters  and  replace  them  by the  substitution
                string as typed, that is, enclosed in  quotes and
                with the initial letter only  in CAPS.  Limit the
                search  to the current page starting at th cursor
                location. 

⊗9αβFSTRINGαβ\"String"αβ∞<CR>	Find all occurances of the string
                STRING, as above, but start the substitution with
		the 9th occurance.

   αXFIND ←αβ\ <BACK ARROW> α<CR>	 Find the first occurance
                of the character  ←  whether on the  current page
                or a subsquent one and  replace it  by the string
                <BACK ARROW>  (including  the <  and >) and  with
                spaces   introduced   before  and   after   these
                characters.    Leave  the resulting  line  in the
                Line-Editor. 

The <CR> termination is the faster mode  of operation in that it does  not
use the the line editor and it is not subject to any effective  limitation
as to the length of  lines that may be handled.   This mode does have  one
defect in that  the substitution is  completed and is  not subject to  the
simple <ALT> method of aborting a single line correction.  When the  α<CR>
termination is used the substitution is  made via the Line-Editor and  the
results are left in the Line-Editor's buffer so that the substitution  may
still be aborted by the usual <ALT> command.

The usual  rules apply to the specification of the searched-for string. 
The substitution string may, however, contain certain delimiters (spaces
in particular) whether or not the search is for a delimited string and a
distinction is  made between  upper  and lower  case letters.  Only  the
searched-for letters without delimiters are replaced. To be specific, if
one  were to replace a  delimited string by a  null substitution string,
the two delimiters would remain in the corrected text. 

The substitution string is sticky, so that a substitution  command, when
successfully executed  for a single  occurance, may be repeated  for the
next  occurence by typing αβ\ only.  The typing of  a new string for the
searched-for  string  destroys  the  record  of   the  previously  saved
substitution string  and the entire request must  be retyped before this
command will be honored. 

A null substitution string  may be used but only  after confirmation has
been requested and received. The substitution will also be restricted to
a single occurance.  It may then be repeated as many times as desired by
the  usual  repeat command  with  the  desired  argument.   If  a  α<cr>
termination  is used, the cursor  will be left  under the last character
before the deletion.

Multi-page substitutions  are useful  but potentially  dangerous as  the
substitutions made on  any one page are, of course, written out onto the
disk file when ever a new page is entered. 

As  noted earlier,  typing αβ\  after a legal  substitution command will
repeat the  substitution. This command  may be preceeded by  an argument
(with control  bits) and the substitution will be repeated the specified
number of times.  Should substitutions occur on more  than one page, all
substitutions on pages earlier than the last page will have been written
out. 

The use of the  command α\ rather  than αβ\ is also  allowed but is  not
recommended. This leaves  the altered line  in the line buffer  with the
possibility of an <ALT> abort. 

Sample repeat commands.

   αβ\		Repeat  the previously made substitution  at the next
                occurance of the searched-for string using the faster
                and  safer mode which  does not leave  the results in
                the Line-Editor buffer. 

   αβ6αβ\	Repeat the substitution for the next 6 occurances.

   α\		Repeat the substitution once but leave the results in
		the Line-Editor buffer.
FILE-SWITCHING and text transfering commands: ⊗ε ⊗λ ⊗H αβH ⊗∃ ⊗? αβ? 

The file switching commands ⊗ε and ⊗λ cause E  to close the current file
being edited (writing out the current page if necessary) and then to ask
for the name  of another file  to be edited.   That  file is opened  for
editing, with any ATTACH buffer  maintained while switching files.  Thus
you  can  switch back  and forth,  editing  different files,  and easily
moving or copying text from one file to another  simply by attaching the
lines desired.   The ε command (ENTER) opens the  new file in read-write
mode while the λ command (LOOK) opens the file in read-only mode.

   All of the  usual switches may  follow the filename typed  with these
commands; for example, you  can use /8P to go to page 8 in the new file,
/E to go to the end of the file, /N to open the new file in no-directory
mode, /C to create  the file you want to switch to, etc. See page 20 for
more details.

   As different  files are referenced,  each file  is assigned a  number
which  can be used thereafter  as an argument  to the ε or  λ command to
call the desired file without retyping its name.  When files  are called
by number, the command (e.g., ⊗2⊗ε or ⊗1⊗λ) does  not ask for a filename
and the  file is positioned at  the last referenced page  and line.  Any
previously existing line marks are also restored.

   Eight different files may  be so referenced.  Should  one reference a
9th  file, the  least-recently-used file  in  the list  is automatically
replaced by  the newly  referenced file.   The  user is  warned of  this
replacement.

   The list  of files with their referencing numbers can be displayed as
a mnemonic aid by the command ⊗∃.

   The previously referenced  file (unless it  be the E-manual  file) is
considered to be the HOME file and can be switched back to by typing the
⊗H  command.   The  home file  is  reopened in  its  previous read-write
condition and at the last referenced  page and line.  On returning  from
the  E-manual file  (see below)  the home  file conditions  that existed
before  going to  the E-manual  are reestablished;  that is, if  you had
switched from  file A  to file  B  then to  the E-manual,  the first  ⊗H
command would  return you to file  B and the next ⊗H  command would take
you back to file  A.  Repeated ⊗H  commands thereafter would switch  you
back and forth between file A and file B.

   The HOME command will accept an argument to override the default page
at  which the file  will be opened;  an absolute  argument specifies the
number of  the page  at which  to open  the home  file,  and a  relative
argument (e.g.,  ⊗+⊗2) specifies the  relative number  of pages to  move
from the last referenced page in the home file before opening it.

   Finally it is possible to reference the E-manual file, E.ALS[UP,DOC],
by typing the ⊗? command.  The first reference to this manual will be to
page 2  which  contains  information  on recently  made  changes  to  E.
Thereafter the  manual file is  opened at  the last referenced  page and
line.  One may, however, override these default values as in the ⊗H home
command by  typing  an  absolute or  relative  argument to  specify  the
absolute or relative number of the page to be opened.

   Difficulties may  be experienced  in copying  and moving  information
from unformatted files  and from files without  directories particularly
if many lines are to be moved. Requests if files may be formatted should
be honored usually unless this is known to be undesirable.  ETV is smart
enough to detect most cases when one tries to format a binary file or an
XGP file and it will tell you this and give you another chance to say NO.
If one attempts to move information TO an unformatted file, the material
in the ATTACH buffer may be lost.

   Also do not try to  use the αβR command when you  have switched files
with something in the  ATTACH buffer or the attached text will be put in
your current file at  the page and line  corresponding to where it  came
from but in the wrong file. This will be fixed some day.

Commands

⊗ε<file name><cr>  Close the current  file and open  the specified
        file in read-write mode.   The usual switches /#P, /#L and
        /C may be used.The new file is assigned a serial number by
        which it  may  be called  later.    (The initial  file  is
        numbered 0). When called by number the display is returned
	to the last referenced page and with the arrow on the last
	referenced line and all previously set line marks restored.

⊗3⊗ε    Reopen the file assigned the serial mumber 3 in read-write
        mode. Note that no carriage return is used in this case.
	Return the display to the last referenced page. Return the
	arrow to the last referenced line and restore all previous
	line marks. (Use the ⊗∃ command, below, to find numbers).

⊗λ<file name><cr>  Close the current  file and open  the specified
        file in read-only  mode.  The  usual switches /#P  and /#L
        may be used.   The new file is assigned a serial number by
        which it  may  be  called  later.   (The  initial  file is
        numbered 0). 

αβ3⊗λ   Reopen the file assigned the serial mumber 3 in  read-only
	mode.

⊗∃      List the previously referenced files with their serial
	numbers.  For convenience the letter H replaces the number
	in the listing of the "HOME" file and a "]" is used rather
	than a ")" for the file currently displayed.

⊗0⊗∃	Move the current-file listing to location zero and flush
	all other listings (to make room for more).

⊗H      Return (HOME) to the last referenced file.  The E-manual
	file is not considered a HOME file.

⊗2⊗0⊗1⊗H  Return (HOME) to the last referenced file on page 201.
	The E-manual file is not considered a HOME file.

⊗-⊗2⊗3⊗H    Return (HOME) to the last referenced file on a page
	that is 23 pages earlier than the last referenced page.
	The E-manual file is not considered a HOME file.

⊗?      Close the  current   file  and  open  the  E  manual file
	E.ALS[UP,DOC]  on the directory page, or, if it has been
	referenced earlier, to the last referenced page and line.
	page and line.

⊗8⊗?	Close the  current   file  and  open  the  E  manual file
	E.ALS[UP,DOC]  on page 8.

⊗-⊗2⊗?  Close the current  file  and  open  the  E  manual file
	E.ALS[UP,DOC] at 2 pages before the previously referenced
	page.

⊗XJFILL ⊗XJUST ⊗XJGET ⊗XSJFILL ⊗XSJUST	Justification commands:
    (See p.  17 for ⊗XALIGN, ⊗XINDENT, ⊗XJCENTER)
    (See p. 18 for ⊗XTJUST ⊗XTJFILL ⊗XTABLE and ⊗XTJGET)

    ⊗XJFILL and ⊗XJUST are basic justiification commands.  There is now no
effective limit  to the  length of  lines  that may  be handled  by  these
commands.  It is always wise to do  a αβ.  before using these commands  so
that one can undo their effect by using the XCANCEL command if necessary.

    The margin justifying command ⊗XJFILL  allow one to adjust the  length
of textual lines by moving words from line to line as required to  achieve
any desired maximum line  length.  At the same  time this command  permits
the left margin to be fixed at any desired position (both for crown lines,
i.e.  first lines of paragraphs, and for normal text lines), and it allows
one to either have the same number of blank lines at each paragraph  break
or to specify the desired number of blank lines.  The ⊗XJUST command  also
pads the line  by distributing additional  spaces between words  so as  to
allign the right margin as well.

    The range  of  application of  these  commands  may be  limited  by  a
prefixed decimal argument.  If no argument is specified the entire page is
justified.  If  there is  an  attachment the  ATTACH buffer  is  justified
rather than the page.   When the range is  limited by a positive  argument
the justification starts with the arrow line while for a negative argument
the justification will be  for the specified number  of lines before  (but
not including) the arrow line.

    ⊗XJFILL or ⊗XJUST, preceded by a  0 argument, causes ETV to report  on
the current status of the switch  setting (se below) and of the  resulting
margins without any overt action other than to record any typed changes to
these values (these changes are recorded before the report is made).

    The basic commands will accept a following string (separated from  the
command itself by a space) which  may contain a (single letter) switch,  a
space, and a following string of decimal numbers separated by commas.  The
values specified  in this  following string  are sticky  and need  not  be
retyped on a subsequent use of  the basic commands if the same  parameters
are desired.  If only some of the  arguments are to be changed, then  only
these arguments  need  be  typed  with  any  missing  numerical  arguments
indicated by commas only.

    The switch letter  is used to  specify the conditions  that are to  be
taken in the original text  to indicate paragraphs, and  it may be one  of
the following, N, G, R,  or A.  The N (for  Normal) switch is the  initial
default switch.

    Blank lines  (lines that  contain NO  characters, not  even spaces  or
TABs) are always  assumed to  mean a  paragraph devision  (for all  switch
settings).

    With the N switch operative,  any line that is  indented by 2 or  more
spaces is also assumes to be a crown  line, that is, to be the start of  a
new paragraph.   Text  without blank  lines  between paragraphs  and  with
different indents  used  for different  crown  lines may  now  be  handled
without
difficulty.

    By specifying a switch letter other  than N, one can now justify  text
that is  not in  "Normal" form,  for example,  with crown  lines that  are
indented less than  the normal indent  of the body  of the paragraphs  and
without separating blank lines.

Switches

N   The N switch causes ETV to recognize any indent greater than 1  and/or
    the presence of a blank line as being a crown line indicator.  This is
    the switch to use  under normal conditions when  the body of the  text
    (non-crown lines) is not indented.   It corresponds fairly closely  to
    the older form of the justify commands and hence it has been made  the
    initial default switch.

G   The G switch causes ETV to scan the specified section of the text that
    is to be justified and to determine from this text the indent that has
    been used  to identify  the crown  lines in  the original  text.   The
    presence of this  indent is then  used during the  justification as  a
    crown line signal (a blank line  is still recognized even without  the
    identified crown indent).  This is the switch to use when you wish  to
    justify some text that had, at  some time in the past) been  justified
    into some non-normal form and you are willing to Let ETV determine the
    conditions for you.

    Care must be used with this switch to be sure that ETV will be able to
identify the crown indent  correctly.  The procedure  used is as  follows:
The text to be justified is first  scanned to locate of a blank line.   If
one is found then the  next non-blank line is assumed  to be a crown  line
and its indent is stored as  the desired identifying indent.  If no  blank
lines are found within  the specified text then  the indents of the  first
two lines are determined.  If these two values are not the same the  first
line is assumed to be a crown line.  If the first two line indents are the
same these lines are taken to be non-crown lines and the rest of the  text
is scanned for a line with a different indent and if one is found this  is
taken as the desired crown indent indicator.  The practical effect of  all
of this is that one should not start the justification with a line that is
the last line of a paragraph, but then doing this is quite meaningless  in
any case.

R   (Rejustify) The R switch causes ETV  to take the last specified  crown
    indent as the crown  line indicator for  the new justification.   Note
    that this is switch is faster and safer than the G switch as the  text
    is not scanned.  This is the switch to use to rejustify text that  you
    have already justified into some non-normal form when either you  have
    made some additional corrections to the text or you have decided  that
    you want the format changed in some way.  Note that it is possible  to
    make changes to the text between the two justifications without having
    to indent any  added non-crown lines  to the precise  amount that  was
    used in  the  original  text.   Added lines  that  are  to  start  new
    paragraphs must, of course, be indented by the correct amount or  must
    be preceded by blank lines.  If the  format is not to be changed  then
    the the previously specified indents need not be retyped.

A   (Assigned) The A switch causes ETV to use the Assigned conditions  for
    the new justification.  This is the switch to use if you have  already
    established the A input  conditions or if you  want to establish  them
    yourself and you then want to justify additionad text.  This switch is
    also useful  if you want to have ETV disregard input text indentations
    and to use blank lines only for new paragraph signals.  This last case
    can be achieved initially by simply specifying the A switch.  ETV will
    disregard indentation conditions in the input text and take all lines,
    that are not preceded by a blank line, to be non-crown lines, if the A
    values are both the same.  The initial default values are set at 0,0.

There are four quite different ways to establish the A values.  These are:

    1) By  typing.  A  vertical bar  "|" after  a number  in the  suffixed
string means that the number is an  A value.  For example, 0|4,5|2 as  the
string means that lines in the original  text with an indent of 0 will  be
taken to  be  crown  lines  and  these lines  are  to  be  indented  4  on
justification and  that the  initial non-crown  lines are  expected to  be
indented by 5 and are  to be indented 2  on justification.  Note that  the
exact value of 5 has  no significance since the  crown line indent is  the
determining factor.  The  exception is  when the  old text  uses the  same
indent for both  crown and non-crown  lines and depend  on blank lines  as
paragraph indicators.  If this is the case then, as noted above, all lines
are taken to be  non-crown lines, regardless of  their indent, as long  as
they do not follow a blank line.

    2) By using the G switch  with the justifying command and letting  ETV
establish the input conditions.

    3) By  using the  ⊗XJGET command,  described below,  to cause  ETV  to
determine the conditions used in  the text.  This command actually  stores
these conditions as the conditions to be produced rather than as the input
conditions but then one wses the  R switch with the justification  command
and this copies the conditions previousny stored as output conditions  and
uses them as the input conditions.

    4) By having  already justified the  text at an  earlier time and  not
having otherwise  changed the  stored  justification parameters  and  then
using the R switch with the new command.

   Typical command strings.

⊗XJUST<cr>      Justify the  current  page (or  the  ATTACH buffer  if  in
		ATTACH mode) using the  default values for all  parameters
		that might be specified by a string following thee command
		name.   These  default  values  are  initially  set  at  N
		0,0,74,-1, the N  signifying the  Normal switch  is to  be
		used which accepts any indent greater than 1 as well as  a
		blank line  to  signal a  new  paragraph.  The  string  of
		decimal numbers (reported  as P,L,R,B)  indicate that  the
		paragraph or  crown  indent  is  to  be  0,  the  left  or
		non-crown indent is  to be 0,  the rightmost character  is
		not to go beyond column  74 and the distribution of  blank
		lines is to be the same in the resulting text as found  in
		the original text.


⊗XJU 0,4,66,0<cr>  Justify the current page or the ATTACH buffer using the
		indents and right margin as specified and leaving no blank
		lines between paragraphs.  The crown lines will all  start
		with 0 indent and the left indent for the rest of the text
		will be 4.  The last occupied column will be 66 and  there
		are to be no blank lines between paragraphs.

⊗XJFI R 10,10,,1<cr>  JFILL (left margin only) the current page which  has
		been justified, perhaps  by the preceding  command, The  R
		switch tells ETV to take  the former output parameters  as
		those that are to be  used to identify crown lines.   Note
		that this command calls for the indents of all lines to be
		the same and that  paragraphs are now  to be separated  by
		single blank lines.
		
	Three new commands have been added for use with normal text.

⊗XJGET

    The ⊗XJGET command  causes ETV to  scan the specified  section of  the
text and to determine the indent values that were used for crown lines and
non-crown lines and the  column position of  the rightmost character.   It
stores these as sticky values for  these parameters and these values  will
then be  used should  a  XJUST or  XJFILL  command be  subsequently  given
without suffixed arguments.  The action  is quite analogous to that  taken
when the G switch is used with  a XJUST or XJFILL command except that  the
values found are stored as the  conditions to be produced on a  subsequent
justification rather than as  the expected conditions to  be found in  the
original text.  This  command always resets  the B value  to its  original
default value of -1, that is for there to be the same arrangement of blank
lines in the justified text as are found in the original text.

    By using this  command one  can redetermine the  parameters that  were
used when  the text  was  justified, presumably  at some  earlier  editing
session or perhaps by someone else and  one can do this without having  to
make the determination by visual inspection.  Note that this command  does
not take suffixed arguments.

⊗XSJFILL and ⊗XSJUST

    The ⊗XSJFILL  and  ⊗XSJUST  commands separate  all  sentences  in  the
specified text so that they all start with the non-crown indent, and  then
the individual  lines  are ⊗XJFILLed  or  ⊗XJUSTified.  As  a  consequence
paragraphing information as shown by an indent is lost but blank lines are
preserved.  Thess commands will accept suffixed arguments which are stored
as sticky parameters prior to the execution of the command and which  then
apply to future uses of these commands or of the normal ⊗XJFILL and ⊗XJUST
commands.

    The task  of rearranging  sentences within  a paragraph  or of  moving
sentences from one paragraph to another  is simplified by the use of these
commands.
⊗XALIGN ⊗XJLEFT ⊗XINDENT ⊗→ ⊗← ⊗XCENTER   MARGIN CONTROL commands:
	(See p. 16 for ⊗XJUST, ⊗XJFILL, ⊗XJGET, ⊗XSJUST and ⊗SJFILL)

      These commands  preserve  the identity  of  the text  lines  while
preforming certain operations on their left margins. 

    ⊗XALIGN moves all lines defined by the location of the arrow line and
a prefixed argument (with 1 line or the entire ATTACH buffer as the default
option) so that all lines start with a specified (or default) indentation.
The command uses initial TABs to the extent possible.  The command can
take a single suffixed decimal (sticky) argument to specify the desired
indentation.  The initial default value is set at 0.

  The command ⊗XALIGN
may be set to operate in one of two different modes with respect to the
treatmant of interior TABs.  The initial default mode is for all interior
TABs to be replaced by the equivalent number of spaces that they produced
before the alignment was effected.  The other mode is entered by typing the
letter T (for TAB) as a suffexed letter (after the command name and
separated from it by a space).  This mode leaves all interior TABs
untouched.  The mode as so changed is sticky and applies for all
subsequent ALIGN and INDENT commands.  The initial default mode may be
restored by typing the letter S (for spaces).


   INDENT simply moves the specified number of lines (default value of 1)
except when  in the ATTACH mode when it is  the entire ATTACH BUFFER) to
the right or left by the specified amount independent of  their original
starting positions.   This permits blocks  of code to be  moved right or
left while preserving their original relative indentations. INDENT will takes
one suffixed numerical argument specifying the desired indentation,
(a positive number if to the right or a negative number if to the
left).  Motion to the left is limited by the edge of the page but there is
no practical limit to the motion to the right so take care when changing 
the indent value.  The initial default indent value is 4.

	The command ⊗XINDENT 
may be set to operate in one of two different modes with respect to the
treatmant of interior TABs.  The initial default mode is for all interior
TABs to be replaced by the equivalent number of spaces that they produced
before the alignment was effected.  The other mode is entered by typing the
letter T (for TAB) as a suffixed letter (after the command name and
separated from it by a space).  This mode leaves all interior TABs
untouched.  The mode as so changed is sticky and applies for all
subsequent ALIGN and INDENT commands.  The initial default mode may be
restored by typing the letter S (for spaces).

   The commands ⊗→ and ⊗← are special cases  of INDENT.   They move  the
specified  lines to  the right  or left  by the (absolute) amount that had been 
set previously by the ⊗XINDENT command.   The default
number of lines is one if not in ATTACH mode or it is the  entire ATTACH
buffer, and the initial default indentation is 4.
require a ⊗X or a carriage return.  In common with INSERT they limit the
text motion to the left edge of the page.
These commands do not take suffixed arguments.


Typical commands.

⊗XALIGN<cr>     ALIGN the  earrow  line (or  entire  ATTACH buffer  if  in
		ATTACH mode)  with  all  lines moved  to  start  with  the
		default ALIGN indentation (originally set to 0).

⊗4⊗XALIGN 5<cr>  ALIGN 4 lines starting with  the arrow line (or with  the
		start of the ATTACH buffer if in ATTACH mode) so that they
		are indented by 5.

⊗XINDENT<cr>    INDENT the arrow line (or  the entire ATTACH buffer if  in
		the  ATTACH  mode)  by  the   default  value  (set  to   4
		initially), but do not let any line move far enough to the
		left to lose any non-space characters.

⊗8⊗XINDENT 3<cr>  INDENT 8 lines starting with CURRENT by 3, that is, move
		the 8 lines  to the  right by  8 positions,  with the  new
		default value being set to 3.

⊗6⊗XIND T 3<cr>  INDENT 6 lines, starting with the arrow line, by 3  after
		changing the mode so that interior TABs are kept as TABs.

⊗6⊗XINDENT -3<cr>  INDENT 6 lines  starting with CURRENT  by -3, (that  is
		move them to the left by 3 positions).


⊗→              Move the CURRENT line or the ATTACH buffer contents to the
		right by the previously established amount.

⊗←              Move the CURRENT line or the ATTACH buffer contents to the
		left by the previously established amount.

⊗6⊗→            Move 6 lines starting  with the CURRENT  line or with  the
		start of the ATTACH buffer to the right by the  previously
		established amount.
⊗XTABLE ⊗XTJFILL ⊗XTJUST and ⊗XTJGET  New commands for tabular material

    Four new commands have  been added that permit  one to handle  tabular
material in a manner analogous to way in which normal text can be treated.
These commands take switches just as do the normal justification commands.

    Two types of commands are provided to take care of the two classes  of
input data that are most apt to be encountered, these being:

A)  Tabular material that is in proper columnar alignment but that may have
    missing entries.

    The XTABLE command is intended for use with such material.

B)  Tabular material that  may not  be in proper  columnar alignment,  but
    where the  entries are  separated by  at least  2 spaces  or by  TABs.
    There may also be normal text associated with each tabular line  which
    is to be justified.  Of course, in  this case there can be no  missing
    entries.

    The XTJFILL  and XTJUST  commands  are intended  for use  under  these
conditions.

    These new  Tabular commands  require the  specification of  additional
values in addition  to the  P,L,R.B values  specified with  the XJUST  and
XJFILL commands.  Of  course, just  as for these  older commands,  default
values may be used and only those values that are to be changed need to be
specified.  Switches  and  margins  are  specified  as  usual  (with  some
restrictions which will be described later).

    When new tabular-field values are to be typed, these must start with a
semicolon ";"  and  they  are  to be  separated  by  commas.   Values  not
otherwise marked  are  taken to  be  field  lengths, that  is  the  string
;5,8,9<CR> is taken to mean that there  are to be three columns the  first
one starting with an indent as specified  by the P value and with a  field
length of 5 character positions, this is to be followed by a second  field
of 8 character positions, then one with a field length of 9.  These values
supercede the field  lengths that  had previously been  specified for  the
first three fields and if still additional fields had been specified these
are to be retained  and shifted to  the right or left  as may be  required
because of the changed to the first three fields.

    When specifying  changes  in fields,  it  is only  necessary  to  type
numbers for those fields that are to be changed and to indicate  preceding
fields by  commas.   Fields after  those  typed are  retained  unless  the
typed-in string is followed by the  letter Z (for zero).  Should there  be
more fields specified for output than are specified for input, E warns the
user at the time of execution of  the TABLE or TJ command and ignores  the
extra fields; should there be fewer  output fields than input fields,  the
command is aborted.

    When several fields are  to have the same  length these fields may  be
specified by the use of the @ sign, thus 9@5,7 means that there are to  be
9 fields of length 5 followed by a field of length 7.  Fields to the  left
of a field that is to be changed may be indicated that are to be left  the
skipped by the  use of commas  without numbers, thus  ,,7 means leave  the
first two columns  unchanged and make  the next  one with a  length of  7.
Similarly 4@0,3@5 means leave the first  4 columns unchanged and make  the
next 3 columns with lengths of 5.  Note that zero, in this case, does  not
mean a column of zero length but means no change.

    Fields must have widths of 3 or more to permit a single character  and
to allow for there  to be two spaces  between the characters in  different
columns.  Should any particular entry be too long for the width specified,
the next entry is automatically moved to  the right so as to preserve  the
desired separation between columns.  Such excesses may propagate.

    Since the N switch  has little meaning for  ⊗XTJ commands the  default
switch for these commands is the G switch.  Care must be taken to see that
the arrow line  is properly  located with respect  to the  text when  this
commend is given as it is  much less easy to correct erroniously  assigned
input conditions  for tabular  material than  it is  for ordinary  textual
material.  Please see the  explanation of the switches  on page 16  pefore
attempting to use any of the ⊗XTJ commands.

    A fourth command XTJGET has been provided to perform the same function
for tabular  material that  is performed  for ordinary  text by  the  XGET
command.  It  should  be  noted  that  this  command  must  deternine  the
positions of each column  as well as  the left margins and  so it must  be
given when the designeted text is restricted to start with a tabular  line
in which there are no missing entries.

	

The specificationns for these new tabular commands will be listed below.

⊗XTABLE 

    This command must  be given either  1) with the  G switch (see  below)
operative, 2) after a prior execution of the ⊗XTJGET command and then with
the R switch operative, or 3) after a properly executed command or set  of
commands as specified by 1  or 2, as just described,  and then with the  A
switch operative.  In effect, one must provide ETV with information as  to
the existing state  of the  input textual  material since  there does  not
exist any  "Normal" set  of conditions  that can  be assumed.   While,  in
principle, it is possible to provide this information by typing it in,  it
is thought that this task can best be handled by ETV.

    Information regarding the desired new format must also be provided and
this will usually be done by  typing the needed information as a  suffixed
string as described below.  This information is sticky and it need not  be
retype.  If there exists a sample  of tabular material that is already  in
the desired format even this second task may be left to ETV by again using
the ⊗XTJGET  command as  explained below.   Note that  the XTJGET  command
changes the parameters as they relate to the conditions to be established,
while the G switch changes the parameters relating to the input text.

    This command  will accept  a prefix  argument defining  the number  of
lines to be processed and a series of suffexed arguments similar in  every
respect to the syntax used with  XFILL and XJUST.  One enters  information
as to the desired tabular fields  by then typing a semicolon ";"  followed
by a series of decimal numbers which define the field lengths to be  used.
If several  fields are  to be  all the  same length  the syntax,  5@7  for
example, may be used meaning in this case that there are to be 5 fields of
7 characters positions each.  Alternately it is possible to define a field
in terms of the last  colmnar position that it  is to occupy by  prefacing
the number with an exclamation mark "!".  Note that it is not possible  to
specify the starting column  as this is set  by the cumulative lengths  of
the preceding fields.

    For example, the  command αβ7αβXTAble  4;10,6@5,!60<CR> would  specify
that there be 8 fields with the first one occupying 10 columns starting at
an indent of 4 then there are to be 6 fields each occuping 7 columns and a
final field ending at column 60.  The starting indent for this last  field
is obtainable by adding up the  columns already accounted for (44) and  so
the last field is to be 16  columns wide.  Note that it is only  necessary
to type a single number before  the semicolon as this commands starts  all
lines with the  crown or  new paragraph  indent.  The  normal left  margin
indent is  not used  and the  program automatically  determines the  right
margin value from the accumulated column count.

    This command requires  information as  to the existing  format of  the
data to be reformatted and information as to the desired new format.   The
old format can  most easily be  obtained by  using the G  switch with  the
command.  The new format imformation can then be typed in with the  XTABLE
command or it my also be obtained from an existing table (or portion of  a
table) that is already in the desired format by using the XTJGET command.

⊗XTJFILL and ⊗XTJUST

    As mentioned earlier these commands are for use with tabular data that
have no missing entries  but do have with  them some associated text  that
one wants justified. The listings  of commands with explanations, as  used
in this manual is an example of such material.  The original material need
not be aligned into columns.

    The methods for specifying  the various parameters  is similar in  all
respects to that described for the ⊗XTABLE command.  Especial care must be
used in establishing these parameters  particularly as regards the  number
of fields.  The signal for a new field is taken to be the presence of 2 or
more  spaces  between  entries  (3  spaces  if  the  entry  ends  with   a
sentence-terminating punctuation  mark) and  if the  textual material  has
already  been  justified  and  padded  there  may  be  cases  where  these
conditions are  met  in  the associated  textual  material.   The  program
differentiats between these entirely on the basis of the number of tabular
entries that are expected and that have been found.

CAUTION: It is unwise to use XTJUST on text that one may want to re-XTJUST
or XTJFILL later,  since any additional  spaces at word  breaks which  the
first XTJUST introduces will be taken as a tabular field indicators during
the execution of the subsequent commands.


⊗XTJGET

    A new command ⊗XTJGET IS also available to determine the margin values
of a designated portion of text in a manner similar to that discribed  for
the G switch  above but it  causes these data  to be store  as the  margin
values that will be used for subsequent XJUST or XJFILL commands.
Other EXTENDED commands: ⊗X<cmd>
   
   Certain commands are potentially too dangerous to be safely evoked by
a single character.  There are also more  commands than can  be obtained
with single characters.  These contingencies are  handled by the  EXTEND
command specified as follows:

   ⊗X     Accept the string which follows as a command. This
	  string may be abbreviated  as long as no ambiguity
	  results.  The string must be terminated by a space
	  if parameters are required,  or  by a <cr> or some
	  other delimiter.

   EXTEND commands.

   ⊗XAPPEND<cr>	Read in an additional page after the current
		one so that the two may be edited together.
		The arrow may be moved up and down on the
		combined pages freely and the αP command (with
		an argument if desired) may be used to switch
		between the in-core pages, without affecting
		the APPEND status.  αβP commands will, however,
		release all pages except the one specified.

		The ⊗XCANCEL<cr> command cancels all corrections
		on all of the in-core pages and releases all
		pages except the first.

   ⊗XBACKGO	Go back to the last page referenced just before
		the one	now being viewed.

   ⊗XBURP<cr>	Write out the current page and in the process
		reduce the disk space to a minimum by deleting
		any all-null records from the current page.

   ⊗XCANCEL<cr> Do not write out the current page but instead 
		reread it in from the disk.  See under XAPPEND
		above the treatment of appended pages.

   ⊗XCLOSE<cr>	Close the file.  This allows others to read it
		if you had modified it.

   ⊗XDDT<cr>	Branch to RAID if it is present. αP returns.

   ⊗XDELETE<cr> Delete the page mark between this page and the next.
		Note that using this command just after a ⊗XMARK
		command does not undo the newly inserted mark
		but it does delete the next mark.

   ⊗XDRAW<cr>	Redraw the complete screen.  Used when unwanted
		marks show on the screen from whatever cause.
		(This does the same thing as ⊗V).

   ⊗XFIND	See p. 13 for details on FIND.

   ⊗XGO<cr>	Exit from E and repeat the last RPG command.

   ⊗XJUST<cr>	Justify the current page  (or the ATTACH buffer
		if in ATTACH mode) using the default values for
		the paragraph, left and right margins.  Margins
		are initially set to 1,1,69.  For elaborations on 
		this basic command, see p. 16.

   ⊗XLINCNT<cr>	Display the number of characters in the current line
		and on the page.

   ⊗XMAIL ALS<cr>    Mail the information shown on the current page
		or that attached, if there is an attachment, to the
		designated person (in this case ALS).  See Appendix
		4 in the MONITOR manual for full details.
		This command will be aborted if an error is detected.
		A message will be typed on your terminal reporting
		the success or failure of execution.

   ⊗XMAIL/SUBJECT ALS<cr>  Mail as above but use the first line as
		the subject.

   ⊗XMARK<cr>   Insert a page mark between the CURRENT line and
		the line above it and display the new page.
		If there is an attachment when this command is 
		given, the attachment will be set down at the top
		of the newly created page.
		Note that this command name may be shortened to M
		but not to MA.
   ⊗XNDFAIL<cr>	Insert a new first line listing all labels that appear
		on the current page in appropiate FAIL format for a
		directory listing.  See page 31 for full details.

   ⊗XNDSAIL<cr>	Insert a new first line listing words that follow certain
		catagory words (default catagories are RECORD!CLASS,
		RECORD_CLASS and PROCEDURE) on the current page in
		appropiate SAIL format for a directory listing.  See
		page 31 for full details.

		If more than one
		page is in core (by the use of the XAPPEND or β<ff>
		commands), then the new line will contain the labels
		from all such pages, and it will appear at the start
		of the first in-core page.

   ⊗XPROTECT<cr>	 Display the protection key for the file
		being edited.

   ⊗XPROTECT 111<cr>	 Change the protection of the file being
		edited to the octal value that is typed (in this
		case to 111, coresponding  to  write  protection
		against all users).  Only 3 octal numbers may be
		given.  An attempt to change the protection of a
		file that is protection protected againt the user
		will not be honored.

   ⊗XREADONLY<cr> Inhibit any further writing of the file.

   ⊗XREADWRITE<cr> Disable the write-inhibit.

   ⊗XREMIND ALS<cr>	Send, as a reminder, to the designated person
		(in this case ALS) the currend page or the attachment,
		if there is one.
		See Appendix 4 of the MONITOR manual for details as
		to way to specify the date, time, etc.
		This command will be aborted if an error is detected.
		A message will be typed on your terminal reporting
		the success or failure of execution.

   ⊗XSEND ALS<cr>	Send the current page, or the attachment,
		if there is one, to the designated person, in this
		case, to ALS.  See Appendix 4 in the MONITOR manual
		for full details.
		This command will be aborted if an error is detected.
		A message will be typed on your terminal reporting
		the success or failure of execution.

   ⊗XSIN(cr)    Put Spaces IN, in place of TABS, for example, so
		that the actual spacings will be preserved  when
		extra characters are added ahead of TABs.   This
		command may take a prefixed argument  specifying
		the number of lines to be operated on.   Without
		an argument it is applied to the entire page  or
		to the entire ATTACH buffer.

		This command will, of course, increase the space
		occupied  by the text  on the disk.  The inverse
		command, XTIN, should be used  to replace spaces
		by TABs, and then, this should be followed by an
		XBURP before saving the page.

		SINning without TINning and BUrping is bad.

   ⊗XSPOOL<cr>	SPOOL the core image of the current page, or the
		ATTACH buffer if something is attached,  without
                writing it out  on disk in the normal  way. This
                allows you  to keep a copy  of changes that  you
                have  made  whether   or  not   you  intend   to
                incorporate them into the  disk copy of the file
                that  is being edited.  The  spooler copy of the
                page is deleted as soon as it  has been printed.
                The  printed   copy  carried  the   same  header
                information as it would have carried had it been
                spooled in the usual way. 

   ⊗XTIN<cr>	Put Tabs IN, in place of spaces, when  this will
		result in a net saving in the space  occupied by
		the text on the disk.  Extra spaces  and/or TABs
		at the end of lines are also deleted.  No change
		is made in the way the text is displayed.   This
		command may take a prefixed argument, to specify
		the number of lines to be processed.  Without an
		argument it is applied to the entire page or the
		ATTACH buffer.  The inverse command is XSIN!

		While this command  reduces the number of spaces
		used in the text, it does not necessarily reduce
		the space that the text will occupy on the disk.
		The command XBURP should be used after  the XTIN
		command, for this purpose.
		


   ⊗XXSPOOL<cr>	XSPOOL the current page under the conditiond noted
		for ⊗XSPOOL<cr> above.

   ⊗XDIRED<cr>	Same as ⊗XRSYS DIRED

   ⊗XDPYALWAYS<cr>	Always re-display text after each command.

   ⊗XDPYSKIP<cr>	Don't re-display text if there are typed-ahead
			commands to be executed.  (normal mode)

   ⊗XINSERT<cr>		Same as β<form>; insert a page mark line.

   ⊗XPPSET<cr>		Reset screen position of page printer (the three
			lines at the bottom of the screen which echo commands).

   ⊗XQUIT<cr>		Same as ⊗XCANCEL followed by ⊗E

   ⊗XRSYS PRGM<cr>	Exits and runs SYS:PRGM

   ⊗XRUN PRGM<cr>	Exits and runs DSK:PRGM

   ⊗XTV<cr>		Starts TV editing the same file E was, in the same place.

   ⊗<n>⊗XTYPE<cr>	Types n lines starting at CURRENT and moves CURRENT
			past those lines.  Primarily useful from
			non-display terminals.
System commands to evoke E and SWITCHES permitted after filenames.

   Basic commands

	CETV <filename and switches><cr>
               Create a new file with the name and extension as
               specified by the filename.  The file will contain a
               directory page (unless /N appears among the switches)
               and one blank page.
	ETV <filename and switches><cr>
               Edit with the specified file with E. If the file has
               but one text page, display this, otherwise display the
               directory page.
	ETV <cr>
               Edit with E the most recently edited file and display
               the most recently opened page.
	ETV <filename1>←<filename2><cr>
               Copy the file named <filename2> into a new file named
               <filename1> and then edit <filename1> with E.  If
               <filename2> has a valid directory, this command is
               executed relatively rapidly; if not, a new directory
               will have to be created.
	READ <filename><cr>
               Edit the specified file in Book mode (/B) and maintain a
               .BKP bookmark file.  See Book mode on p. 27.

	R E;<filename and switches><cr>
               Same as ETV <filename and switches> except that no
               TMPCOR file is written when you exit.  The TMPCOR file
               normally contains the name of the last file you edited
               and within that file the numbers of the page and line
               from which you exited.


   Switches, when used, are strings beginning with a slash which are
placed immediately after the name string that they are to modify.

	/C	Create a new file with the specified name.  This is of
                  most use when one wishes to create a new file with
                  the file switching command ⊗ε, perhaps to hold some
                  attached text from the current file.
	/R	Open the file in the read-only mode. This is useful
 		  if one wants to examine a file without any danger
		  of inadvertently modifying it.  For example:
			ETV TEACH.TXT[UP,DOC]/R<cr>
                  You can leave read-only mode by using the ⊗XREADWRITE
                  command.  You enter read-only mode with ⊗XREADONLY.
	/B	Book mode.  Edit the file in book mode.  In this mode
                  you are never permitted to alter the file nor are you
                  permitted to leave this mode.  See the explanation of
                  book mode on p. 27.
	/N	No Directory.  Edit the file without writing a directory
                  on page one.  The directory must be generated from
                  scratch and the file reformatted each time you edit
                  the file.  The directory is kept in core by E but
                  never written in the file.
	/F	Repage and reformat the file with the maximum page size
                  limited to the default value of 33 (one screenful on
                  Data Disc terminals).  The F may be preceeded by a
                  decimal argument to use any desired number instead of
                  33. Old page marks are retained however, so it is not
                  possible to increase the page size by this switch and
                  some pages may be shorter than the specified length.
                  This switch is particularly useful for getting long
                  unformatted files into a shape where they can be
                  handled safely and easily.
	/F/R    Repage and reformat the core version only without
                  changing the disk copy.  The new directory will be on
                  page 0 and the old directory (if there is one) will be
                  kept as a part of the text starting on page 1.  Do not
                  try to use the old directory as it is invalid.  This
                  switch combination is particularly useful for
                  examining (without altering) unformatted files that
                  have been produced by programs other than E.
	/nP	Open the file at page n, where n is a decimal number.
        /mL     Open the file with the arrow at line m (m is decimal).
	/E	Open the file at the End of the last page.
	/nE	Open the file at the End of page n (decimal).
	/S      Open the file at the Same page and line the last file
		  was open at.
	/Q      Quietly assume a Yes answer to any questions E would
		  otherwise ask about having to format or replace an
		  existing file.  Discard any invalid or undesired
		  directory instead of asking about it.

The switches may appear all together inside parentheses instead of
separately following slashes.  For example: ET MYFILE(R4P5L)<cr>.
Using ETV from a TTY or IMLAC.

Note: This page  is currently being composed without  my having
confirmed  the information  that is being  recorded. It  may be
greviously in error. 

It is  possible  to use  ETV from  a no-display  terminal.   Of
course, some of the advantages of ETV over say SOS are lost but
one may  not want  to go  to the  trouble  of having  switching
editors in mid-stream.  As partial compensation for the lack of
display features, ETV  provide the TTY user with  line numbers.
The  lack  of  CONTROL and  META  bits  does introduce  certain
operating difficulties. See the MONITOR COMMAND MANUAL sections
3 and 4.7 for other information of interest to TTY users.

No special action is required of the TTY  user to tell ETV that
a  TTY is being used.  This  happens automatically  when ETV is
started.

The mode distinction which  has been referred to previously  is
much more  distinct when  operation from a  TTY. There  are two
main  modes. Initially, all characters typed  to ETV from a TTY
are assumed to be commands, that is the character  is read by E
as  if it  had  been  typed with  both  CONTROL and  META  keys
depressed. One can, however, enter an INSERT mode by typing the
character I and then everything thereafter (with  the exception
of certain preempted control signals) is accepted as text. 

The ALT or ESC key is the escape key (octal 175)  which returns
one to  the COMMAND mode. Because of this usage, the use of ALT
to abort certain ETV commands is seriously impeded. 

One is denied the  use of the LINE-EDITOR features  so that the
only way to alter  an existing line is to delete it and type it
in from scratch.

On  most no-display  terminals,  it  is  not possible  to  send
commands  that require a  single  Stanford-keyboard control key
(either the CONTROL  or the META key  only) as contrasted  with
those that permit  either the CONTROL only or  both CONTROL and
META keys.

The control  key on  the  TTY is  not at  all the  same as  the
Stanford-keyboard  CONTROL  key  referenced  in  most  of  this
manual.   Some  teletype control  characters  are part  of  the
extended character set  at Stanford and can thus  be typed (see
the complete list at the end of this page). 

Some characters  cannot  be sent  at all;  their  use has  been
preempted  by  the  system.   When  these  characters exist  in
previously prepared text they will  print as shown by the  list
below.  Note that the form in which they print will depend upon
the terminal that you are using to read the text; an LPT or XGP
output will, of course,  be in the Stanford  extended character
set.   Most  terminals use  two characters,  the  first usually
being an up-arrow. 

Stanford characters  that  cannot be  sent as  text  or as  ETV
control characters are:

Octal	Usual		Prints	Typed	Preempted as a system
	name		out as	in as	  command used for

002	alpha		α	<ctr>B	type-out pause (toggles)
003	beta		β	<ctr>C	monitor call
017	delta		∂	<ctr>O	flush type-out (toggles)
025	there exists	∃	<ctr>U  flush type-in 
032	tilde		~	<ctr>Z  end of file
033	not equal	≠	<ctr>[  altmode

  Use of the IMLAC

  ETV is  more useful from  the IMLAC.   If you are  in command
  mode,  you have a  choice: send  the command with  no control
  bits (it will be interpreted  as if it had both control  bits
  on),  or  with selected  control  bits  (this is  useful  for
  distinguishing between  αM and αβM, which cannot be done from
  a TTY).  It  is possible  to  give  substitute commands since
  ⊗\ is transmittable.

Character equivalences

Code	Name		Prints	Typed	Preempted
octal			out as	in as	for

000	null
001	down arrow	↓	<ctr>A
002	alpha		α	<ctr>B	type-out pause (toggles)
003	beta		β	<ctr>C	monitor call
004	logical and	∧	<ctr>D
005	logical not	¬	<ctr>E
006	epsilon		ε	<ctr>F
007	pi		π	<ctr>G

010	lambda		λ	<ctr>H
011	TAB
012	LF
013	VT
014	FF
015	CR
016	infinity	∞	<ctr>N
017	delta		∂	<ctr>O	flush type-out (toggles)

020	containment	⊂	<ctr>P
021	implication	⊃	<ctr>Q
022	intersection	∩	<ctr>R
023	union		∪	<ctr>S
024	for all		∀	<ctr>T
025	there exists	∃	<ctr>U  flush type-in 
026	circle times	⊗	<ctr>V
027	double-arrow	↔	<ctr>W

030	underbar	_	<ctr>X
031	right-arrow	→	<ctr>Y
032	tilde		~	<ctr>Z  end of file
033	not equal	≠	<ctr>[  altmode
034	less or equal	≤	<ctr>\
035	greater or eq	≥	<ctr>]
036	equivalence	≡	<ctr>↑
037	logical or	∨	<ctr>←

040	SP
041	exclamation	!	!
042	double quote	"	"
043	number sign	#	#
044	dollar sign	$	$
045	percent		%	%
046	ampersand	&	&
047	close s. quote	'	'

050	left paren	(	(
051	right paren	)	)
052	asterisk	*	*
053	plus		+	+
054	comma		,	,
055	minus		-	-
056	point		.	.
057	slash		/	/

060	digits		0	0
...
071			9	9
072	colon		:	:
073	semicolon	;	;
074	left broket	<	<
075	equal		=	=
076	right broket	>	>
077	question mark	?	?

100	at sign		@	@
101	upper-case	A	A
...
132			Z	Z
133	left bracket	[	[
134	back slash	\	\
135	right bracket	]	]
136	up¬arrow	↑	↑
137	left-arrow	←	←

140	open s. quote	`	`
141	lower case 	a	a
...
172			z	z
173	left brace	{	{
174	vertical bar	|	|
175	ALT			ALT or ESC
176	right brace	}	}
177	BS or DEL		BS or DEL
PARENTHESIS finding/matching commands: ⊗( ⊗) ⊗XLPAREN ⊗XRPAREN ⊗↔ ⊗XPAREN

  This set of commands allows one  to check  nested sets  of bracketing
symbols for matching pairs  and for related properties.   The search may
be restricted  to the current page by using the (  and ) forms or it may
be extended over the rest of the file by the extended  commands ⊗XLPAREN
and ⊗XRPAREN.  It  always starts from the location of  the cursor at the
time  the command is given  and proceeds in the  forward direction.  The
nesting  level is  re-assigned  the  value  0 at  the  cursor's  current
position for each new command (see special conventions below).

   The default symbols are  the normal parentheses ( and  ).   An EXTEND
command ⊗XPAREN  allows  one to  define any  desired set.   The  command
itself  must be  delimited by a  space and  followed by the  desired two
characters and a carriage return.   If the desired pair is from the  set
→←,  ⊂⊃, `',  ≤≥, {},  <>, [],  then only  the first  of the  set and  a
carriage  return should be  typed.  If  another set had  been chosen the
default set may be reset  by typing the setting command with  a carriage
return only.
   Note, that a space is an acceptable symbol  and for this reason extra
spaces are  not permitted in the command string.   A distinction is also
made between upper and  lower case characters so that both  may be used.
In the special case when the same character is assigned to both symbols,
the concept of nesting has  no meaning and the commands are  interpreted
differently, as noted in the special section below. 

  In what follows, the two symbols of the chosen set will be referred to
as the left-symbol and the right-symbol respectively.

  The  normal commands are then  ⊗( and ⊗).   Each of these  may take an
argument which  specifies the sought-for  nesting level  for the  region
defined by  the bracketing symbol.   The default argument is  1 for both
commands.  The corresponding  extend commands are ⊗XLPAREN and ⊗XRPAREN.
These commands may be given both when not in the line editor and when in
the line editor.  If given  when in the line editor the line will not be
written out should the  search be unsuccessful or  should the search  be
successful with the found symbol in the same  line.  A successful search
that results in leaving the line editor to go to another line will cause
the original line-editor contents to be written.

  There is one additional command ⊗↔ which, in effect, un-does  the last
⊗(, ⊗), ⊗XLPAREN,  ⊗XRPAREN or ⊗↔ command and returns  the cursor to its
former position.

   Note that the most frequent use of these command will be in LISP
   where one wants  to find matching parentheses, and hence the use
   of ( and ) for the commands and for the default symbols.

   SAIL users may find it useful to  define an otherwise unused set
   of symbols to  mean BEGIN and END (some people already use ⊂ and
   ⊃ for this purpose), and to use these symbols in their stead, at
   least while debugging. 

Special conventions

A special convention has been adopted to avoid ambiguity for those cases
in which these  commands are given while the line-editor cursor is under
one of the searched-for bracketing  symbols.  This convention is that  a
cursor under a left-symbol is presumed  to be actually to its left, that
is,  outside  of  the  symbol  (as it  appears)  and  a  cursor  under a
right-symbol is presumed to be  actually to its right, again  outside of
the symbol (and again as it appears). 

   Arguments, when used with these commands refer to the desired nesting
level within the  region defined by the nesting pairs. If no argument is
given, the default value is  1, in accordance with the usual  convention
for  most ETV  commands. As  a mnemonic  aid, the  sought-for symbol  is
reported   with  the  argument  shown   after  left-symbols  and  before
right-eymbols although  the argument  must  always be  typed before  the
command  (to permit the  command character,  itself, to  be used  as the
activator). 

   By convention the starting  level is always re-assigned the  value 0.
Left-symbols increase  the nesting level and right-symbols decrease the
level. 

Typical commands

⊗4⊗(	Move  the  cursor  to that  left-symbol which  would  cause  the
nesting to reach a  level of 4, considering the  present cursor position
to be at level 0.  Do not move the cursor if this level is not found and
report the deficiency.  This request  is reported as (4 for the  reasons
noted above.

⊗(	With no argument, this command finds the very first left-symbol.
If the cursor is already at a left-symbol this command is a NO-OP.  This
is  in consequence of the  convention that a cursor  under a left-symbol
actually refers to the situation just ahead of the symbol.

⊗XLPAREN   This is the same as ⊗( except that the search is permitted to
continue past the end of the current incore page(s).

⊗)	If the  cursor is  already positioned  under a left-symbol, move
the cursor to  the matching right-symbol. If  the cursor is not  under a
left-symbol, then search  for that right-symbol that returns returns the
nesting level to its initial value of  0.  Should the cursor be under  a
right-symbol, the initial level is taken to  be that at its right.  Note
that  this command is a NO-OP only for  the case where the desired level
cannot be found. This request is reported as 1).

   If the end of the text is reached before a transition from level 1 to
level 0  is found, the cursor  is left in its  original position and the
deficiency is reported along with the other data. Deficiencies,  in this
case can be of two sorts, either a level of 1 is never reached or having
been  reached  and possibly  exceeded  as  a result  of  left-symbols, a
right-symbol is  never encountered while  at this  level.  In  the first
case, the deficiency figure  is reported following a down arrow (meaning
always below). 

⊗XRPAREN   This is the same as ⊗) except that the search is permitted to
continue past the end of the current incore page(s).

⊗3⊗)	Search through the text as just described but stop at  the first
right-symbol that reduces the nesting-level from the specified level, in
this case 3. This request is reported as 3).

Interpretation when the same character is used for both symbols:

   Both the ( and the ) command, in this case, ignore the symbol that is
above the cursor at the time the command is given and search for the Nth
next example of the  specified symbol, where N  is the argument that  is
used with  the command.  The ( command  is not a  NO-OP in  this special
case. 

Automatic and manual BEEPING upon command completion: ⊗XBEEP

   The user may now set a flag that will  causes ETV to beep his console
at  the conclusion  of  any command  execution taking  longer  than some
preassigned value of real time.

   This flag  is now preset  to the NO-BEEP  condition. If  enough users
like  the feature the  flag can easily  be preset to  the BEEP condition
with the preassigned value set to any desired number of seconds. 

   The commands are:

⊗XBEEP      Beep me now.   This may be typed ahead when ever desired and
            you will be beeped on the conclusion  of the pending command
            execution regardless of how long it takes. This command does
            not alter the setting of the BEEP-NO-BEEP flag,  nor does it
	    change the preset timer value.  It is a one shot command.

⊗#⊗XBEEP    Set the beep  flag to the BEEP  condition and set the  timer
	    value to # number of seconds (where # is a decimal number).

⊗0⊗XBEEP    Set the beep flag to the NO-BEEP condition, without changing
	    the timer setting (which, of course, will not be used).

⊗+⊗XBEEP    Set the beep flag to the BEEP condition without changing the
	    preassigned timer setting and report this time.
Message handling partial-sign command: ⊗∂<cmd> ⊗0⊗∂

The new  partial-sign (∂) command  is designed  for easy handling  of
messages in mail files,  but it can be used on any file regardless of
whether the  file contains mail-like  messages.   For instance,  this
command is capable of attaching (or deleting) a whole page of text at
once and simultaneously deleting the pagemark for that page.

The  ⊗∂ command is  a search command  used to find  the beginnings of
"messages." A  message is defined  as the  largest contiguous set  of
lines of which only the  first starts with a partial-sign (∂) and the
last of  which  is followed  either  by another  line  starting  with
partial-sign or  by the  end of  the page.   The  current message  is
defined as the  message containing the current line (the arrow line).
If the arrow is on the row  of stars that marks the end of the  page,
then the current message is the  one that contains the last real line
of the  page.  (Perhaps later the character which delimits "messages"
will be user-settable, but for now it is always partial-sign.)

Messages are never considered  to extend across page boundaries.   If
neither the  current line nor  any of the  lines preceding it  on the
current page starts with a  partial-sign, then the current  "message"
starts with the first line of the current page.  If none of the lines
(on  the  current   page)  below  the  current  line  starts  with  a
partial-sign, then the last line of the current "message" is the last
line on the  page.  Thus, if  there are no lines on  the current page
that start with ∂, then the current "message" is the whole page.

Like  the ⊗F  command, the  ⊗∂ command  requires a  following command
before any  action  is  taken (with  one  exception, which  is  noted
below).   However, the  ⊗∂ command  does not  accept a  search string
before the second  command; ⊗∂  always searches  for lines  beginning
with a partial-sign.  If the command following  is one of the special
commands that use  the number of lines searched (for instance, by the
⊗F command) as the argument to the command, then that command will be
carried out  for the entire current  message.  If the  command is not
one of these special ones, then it will be executed at the end of the
current message.

Currently the special commands that use the number  of lines searched
as the  command argument are:  αβD (delete), ⊗A  (attach), ⊗C (copy),
⊗←, ⊗→, XALIGN, XCENTER, XINDENT, XJFILL, XJOIN, XJUST.

The ⊗∂ command may be preceded by a numeric argument which  specifies
the number  of messages  (starting with  the current  one) which  the
command is to  affect.  If that number is negative, then the messages
just before the current one are the ones effected, with  the absolute
value of the argument specifying how many messages.


N.B.: A zero argument to the  ⊗∂ commands means move to the beginning
of the current message WITHOUT WAITING FOR A SECOND COMMAND.  This is
the only case where a second command is not used by the ∂⊗ command.


!!!!! SPECIAL FEATURE OF THE PARTIAL-SIGN COMMAND !!!!!  N.B.: If the
partial-sign  command is  used with  ⊗A (attach)  or αβD  (delete) to
attach or delete  every line on  the current page,  then the  current
page  itself,  i.e.,  its  pagemark,  will  also   be  deleted.    In
particular,  if the current  page is not  the last page  in the file,
then the following pagemark will  be deleted, leaving you at the  top
of that page; if the current page  is the last page in the file, then
the  preceding pagemark will be  deleted and you will  be left at the
bottom of the previous page.   However, no pagemark deleting  will be
done if the  file has only one page besides  the directory.  And note
that the page deleting  only happens when the  entire page's text  is
either deleted or attached using the partial-sign command!


If there are already some lines in the attach  buffer at the time you
give  an ⊗∂⊗A command, the  new messages being attached  are added at
the end of  the attach  buffer.  If  you give a  ⊗-⊗∂⊗A command  when
there are already lines in the  attach buffer, the new messages being
attached are inserted at the beginning of the attach buffer, ahead of
the text already there.


Here are some  example uses  of the partial-sign  command.  The  ones
marked with  an asterisk (*)  all involve either  αβD or ⊗A  and will
delete a  pagemark in  addition to  the action  noted if  the  action
results in  an empty  page which is  not the  only page (besides  any
directory) in the file.


⊗∂αβD ;*  Deletes the current message.  
⊗∂⊗A ;* Attaches the current message. 
⊗∂⊗C ;Copies the current message into the attach buffer.

⊗-⊗∂<cr> ;Moves to  beginning of  previous message.  
⊗0⊗∂ ;Moves  to beginning of  current message.  
⊗∂<cr> ;Moves  to beginning  of next message.

⊗∂<bs> ;Moves to end of current message. 
⊗∂⊗J ;Moves to beginning of next message and jumps screen up. 
⊗∂αβ<cr>  ;Enters line-insert mode between the end of the
          ;current message and the beginning of the next one.

⊗3⊗∂⊗D  ;* Deletes  three  messages starting  with  the current  one.
⊗3⊗∂⊗A ;*  Attaches three  messages starting  with the  current  one.
⊗3⊗∂⊗C ;Copies three messages starting with the current one.

⊗-⊗2⊗∂⊗D  ;Deletes  the  two  messages  preceding  the  current  one.
⊗-⊗2⊗∂⊗A  ;Attaches  the  two  messages  preceding  the current  one.
⊗-⊗2⊗∂⊗C ;Copies the two messages preceding the current one.

Defining and using MACROS: ⊗XDEFINE ⊗Y

To save the user the trouble of having to type the same sequence of
commands several times, E now provides a very simple macro facility.
The XDEFINE command is used to define a macro as an arbitrary string
of characters (any of which can have either or both of the CONTROL
and META bits on).  Then, the ⊗Y command is used to invoke expansion
of the macro, which is equivalent (with only a couple of exceptions)
to actually typing the command- and/or text-characters that make up
the macro definition.

At present, there is only one macro definition retained by E, and
that definition is caused to be expanded by the ⊗Y command.  Later
there may be ways of defining more than one macro at a time.  Also,
at present there is no way to define a macro that takes text
arguments to be substituted into the definition during expansion, but
this may also be added later.

A macro can be caused to be expanded a number of times in a row by
preceding the call by a numeric argument; e.g., ⊗7⊗Y will expand the
macro 7 consecutive times (unless an error or interruption
occurs--see below).

The command ⊗0⊗Y will type out the current macro definition without
expanding it.  In the typeout of the definition, the characters α and
β are used to represent the display keyboard bits CONTROL and META,
respectively, and certain non-printing characters are printed as
<name of char>.

Normally, expansion of a macro continues until the end of the
definition and the exhaustion of the repeat argument.  However, there
are numerous errors which, when detected by E, will cause immediate
termination of any macro expansion in progress.  Also, the user can
manually interrupt macro expansion by typing ESC I (display terminals
only, sorry).  If E asks a Yes or No question (to be answered Y or
N), it will ALWAYS read the answer from the terminal, never from a
macro expansion in progress; and if the answer is no, then macro
expansion will be terminated.  Finally, if a macro calls or redefines
itself, then the original call will be terminated but the second call
or the redefinition will nevertheless happen.  In the case of a macro
calling itself, the second call will run from the beginning of the
definition, and there is no way for the macro to run to completion
because it will always call itself before it completes expansion.

Most errors will terminate macro expansion immediately.  Among those
errors that terminate macro expansion are all of the errors that
generate messages of the form "SORRY -- ...." plus the following:

    1) Search failure.
    2) Substitution failure.
    3) Illegal command given from the line editor.
    4) Saying anything but Y (for yes) to a Yes or No question.
    5) Bad filename or file not found by the ⊗ε or ⊗λ command.
    6) ALTMODE termination of an extended command.
    7) Improper argument to XPAREN command.
    8) Invalid directory pointer.
    9) A checksum failure in the upper segment.
   10) Redefining the macro.

When a macro is expanded, the display is normally not updated until
the macro has terminated.  However, if the ⊗V command occurs as a
command within a macro, the screen will be updated immediately when
the expansion reaches that command.  Thus by putting ⊗V commands at
strategic places in the definition, you can observe the progress of
the expansion. 

During macro expansion, E omits the prompts for commands that read
characters from the terminal since the characters are instead read
from the macro definition; in particular, the "COMMAND?" that follows
the ⊗X command, and the "File?" that follows ⊗ε and ⊗λ commands are
all suppressed.  Also, "OK" is not typed out during expansion.
However, informative typeouts are not suppressed in any way during
expansion.  Also, since lines can be edited (through the line editor)
by a macro expansion, the echo of such edited lines will appear
during the expansion. 

Commands:

	⊗XDEFINE<cr>
All characters up to the end-of-definition character are read and
stored exactly as typed.  The end-of-definition character for macro
definitions is the terminal's end-of-file (EOF) character: αβ<lf> on
displays and Imlacs and ↑Z on other terminals.  During macro defining
no check is made to ensure that the string is a legal sequence of
commands.  If the EOF character is the first character typed, then no
definition is stored and any previous definition is preserved;
otherwise any previous definition is discarded.  Note that ALTMODE
does not end a macro definition; ALTMODE is a legitimate command to
be included in a macro.  IMPORTANT NOTE FOR DISPLAY USERS: When
defining a macro, normal line editor commands (BACKSPACE, α<FORM>,
etc.) are activation characters instead and will be put into the
definition exactly as typed with the exception of CLEAR, which will
clear your line editor just as always.  Thus if you make a mistake
while typing a line in the definition, DO NOT TYPE BACKSPACE to back
up; you must type CLEAR and then retype the correct version.  If you
type BACKSPACE by mistake, the only way to correct the macro
definition is to finish it with the EOF character and then re-enter
the correct version with another XDEFINE command.  BACKSPACE can,
however, be included in the definition as precisely that, BACKSPACE,
but avoid putting BACKSPACE at the end of an extended command name, a
search string, or a filename (because the BACKSPACE would be treated
as an activation character in the macro expansion).  Note that this
warning does not apply to non-display users, whose BACKSPACE
character can still be used to back up over the last character in the
current line, even during the macro defining. 

	⊗Y
Characters from the current macro definition are used in place of
characters (commands and/or text) from the terminal until either the
definition runs out or the expansion is terminated early by one of
the conditions listed above.  However, the answer to any Yes or No
question is still read from the terminal, with subsequent characters
again taken from the macro definition provided the answer to the
question is Yes.  If ⊗Y is typed from within the line editor, then
the line is reloaded into the line editor with the cursor at the same
place it was when the ⊗Y was given and then expansion of the macro
begins.  Note that if the first command from the macro definition is
a search, it will start from the position following that from which
the ⊗Y command was given in the line.

When macro expansion is terminated for any reason, an ALTMODE
character is used as the next input character to force completion of
any partially-typed command.  However, there is one major exception
to this rule, namely:
   If the macro expansion runs to completion and the effect of
   the last characters in the macro is to leave a line of text
   (from the file) in the line editor, then the normally-inserted
   ALTMODE is omitted and the text is left in the line editor. 
Because of the ALTMODE-insertion rule, if a macro definition ends
with a partially typed command, that command will be aborted by the
ALTMODE. 

	⊗7⊗Y
Characters are read from the macro definition instead of from the
terminal until the definition has run out 7 times or early
termination is forced by one of the afore-mentioned conditions. 

	⊗0⊗Y
The current macro definition is typed out, using the α and β
characters to represent the display-keyboard CONTROL and META bits,
respectively. 
ETV files extended by other programs.

ETV can handle easily almost any file that has been extended by
another program even though the directory has not been updated by
that program.  The single restriction is that the file must remain in
correct ETV format with Formfeeds occurring only as the first
character in a record.  When ETV encounters a file that is longer
than the directory indicates, the file is read from the last
indicated page to the end of the file to make sure that the file is
properly formatted.  If the file is formatted ok, then ETV generates
in core an updated version of the directory, including directory
lines for any new pages added to the file.  The updated directory is
normally not written out onto the disk until some command forces one
or more other pages to be written on the disk.  However, the ⊗XUPDATE
command immediately writes out the updated directory, if any.  As
long as the updated directory remains not written out on the disk, a
"U" (for update) is displayed on the top line of the screen.  The
first time any page is changed and written out, or when the ⊗XUPDATE
command is given, the updated directory will be written out and the
"U" will disappear.

When ETV opens a file that has been properly extended in the above
manner, it reports the number of pages that have been added to the
file, or, if none, the number of records by which the last page has
been extended.  Also, if any pages have been added, the default
position within the file (at which ETV will place you if you gave no
specific page number in a /#P switch) is the first newly added page.

MAIL and RCV extend ETV files in this way.
BOOK MODE (/B) and the READ command

Book mode (/B) in E provides some special features for editing files,
especially files which are really books in disguise.  The main feature
of book mode is that you cannot alter a file open in this mode.  In
addition, the READ command allows you to read a file in book mode over a
long period of time without having to explicitly remember your place in
the file.  Your place will be saved in a .BKP file.

You get into book mode by following the filename with /B when you are
starting to edit, or by using the READ command to edit the file.

1. In /B mode, E will never permit you to alter the file you are
editing; you cannot change to READONLY mode or READWRITE mode from /B
mode.  In /B mode, if you change part of a page and try to write out
the new version, E will simply remind you that you cannot alter the
file.

2. To help you keep your place in a book-file you are reading, E
keeps a special psuedo-SNAIL file on your area.  This file will have
the name <filnam>.BKP, where <filnam> is the primary name of the
book-file.  Note that the .BKP file is NOT a SNAIL file (although it
is in SNAIL file format), and thus will never be deleted by LOGOUT.
This .BKP file will contain the page number and line number at which
you were editing the book-file the last time you exited from E.  E
will neither look for nor write a .BKP file unless you have started E
with the monitor command READ, which automatically starts E in /B
mode looking for a .BKP file.  Furthermore, when you start E with the
READ command, if you specify any of the /L, /P or /R switches, E will
not read or write any .BKP file.  And if you start E with just the
READ command without any argument, then unless there already is
a .BKP file on your area, no new .BKP file will be written.

3. The READ command with an argument (and without any of the /L, /P
and /R switches) will look for a .BKP file with the given name and
PPN.  If that .BKP file is not found, E will look for the .BKP file
on your current ALIAS area and then on your logged-in area.  If a .BKP
file is found, it is used and updated when you exit.  Otherwise, a
new .BKP file will be written onto your (ALIAS) area when you exit.

4. Whenever you use E in /B mode, it will reference TMPCOR files with
the name BK instead of ED.  Thus you can switch back and forth
between editing some program and reading a book by alternately giving
the no-argument monitor commands ETV and READ (provided you have once
given the filenames).  In /B mode, E will display "/B" following the
filename at the top of the screen.

5. When you have finished reading a book-file, E will delete the
<filnam>.BKP file automatically.  E will think you have finished
reading the book if and only if you are on the last page of the file
when you exit.

- - - - -

The complete book WUTHERING HEIGHTS by Emily Bronte is available for
general reading in the file WUTHER[LIB,DOC].  To begin reading it,
simply give the monitor command:

.READ WUTHER[LIB,DOC]

Then when you exit from E, the file WUTHER.BKP will have been written
onto your (ALIAS) disk area with the numbers of the page and line
where you were last reading.  To continue reading the file later
during the same login session (and with the same ALIAS as before),
simply say:

.READ

which will read in the TMPCOR file BK for your current ALIAS.  When
you exit again, the TMPCOR file and the .BKP file will be updated.

To continue reading after you have logged out and back in, say:

.READ WUTHER

which will cause E to find your .BKP file, which itself will contain
the name of the book-file WUTHER[LIB,DOC].

Some other book-files will be found on the [LIB,DOC] disk area, including
GRIMM which is Grimm's Fairy Tales.

- - - - -

To read a file in /B mode without having the <filnam>.BKP file read
or written, type any one of the monitor commands:

.ETV <filename>/B
.READ <filename>/R
.READ <filename>/nP

where <filename> is the name of the file, including any extension
and/or PPN, and n is the number of the page you want to start on.  
The /R in the second command and the /nP in the third inhibit use of
any .BKP file; the READ command starts E in /B mode.
IMLAC use of line editor.

On Imlacs, the command Z loads the Imlac's line editor with the
current line for editing.  When the line has been edited, it should
be activated with either <CR> or <ALT>, which commands will behave as
they do on displays: <ALT> discards the edited text and leaves the
line unchanged; <CR> accepts the edited text and moves down a line.
(Sometimes <ALT> doesn't activate on an Imlac--when that happens,
type <CTRL><META><ALT>, which will activate.) This command only works
on Imlacs.

The line editor commands which enter the current line on a display
terminal (such as <CTRL><SPACE>, <CTRL><TAB>, <CTRL>S, <CTRL>D, etc.)
CANNOT be used for that purpose on Imlacs.  Other commands which on
displays load a line in the line editor CAN be used on Imlacs, and
they will load the line editor.  Currently, however, whenever the
line editor is loaded on an Imlac, the cursor is always positioned at
the beginning of the line.  For instance, the command ⊗↑ (normally,
"move to end of line above") will, on an Imlac, do "move to beginning
of line above", as will the ⊗; command (normally, "move to same
column position on line above").
NEW EXTENDED COMMANDS PROVIDED MAINLY FOR TELETYPE USERS

The following extended commands do exactly the same thing as the
corresponding single-character commands for which they were named.
Note that some of the single-character commands are impossible to
use on Teletypes because they are intercepted by the system as
special control functions (e.g., ↑U clears input line being typed).
See the writeup for the single-character commands for details of the functions.

Extended	Equivalent Single-Character Command
Command

XEXIST		∃ (there-exists sign, octal 025, ↑U (intercepted by system))
XLAMBDA		λ (lambda, octal 010, ↑H) Switches files.
XLOOKUP		λ (lambda, octal 010, ↑H) Switches files.
XEPSILON	ε (epsilon, octal 006, ↑F) Switches files.
XENTER		ε (epsilon, octal 006, ↑F) Switches files.
XPARTIAL	∂ (partial-sign, octal 017, ↑O (intercepted by system))
XMSG		∂ (partial-sign, octal 017, ↑O (intercepted by system))
FILEHACKS

The following filehacks, also usable with the COPY program, are
available in E.  The file represented by each is indicated; all these
files are on the [2,2] disk area.  A filehack consists of a backslash
followed by a name from the list below; the name may be abbreviated
by as many letter as necessary to identify it uniquely (current
abbreviations are given below).  A filehack takes the place of the
filename and can be followed by the usual switches.  Note that some
of the files below are not usually maintained in E format; beware.

FILEHACK  ABBR  FILE
\MAIL	  \M	The current user's mail file.
\MSG	  \M	The current user's mail file.
\GRIPES	  \G	The system gripe file.
\NOTICE	  \NO	The system message file: NOTICE.TXT[2,2].
\NAP	  \N	The current user's NS notifications file.
\NS	  \N	The current user's NS notifications file.
\DOWN	  \DO	The system downtime forecast file.
\DAY	  \DA	The message-of-the-day file.
XNDFAIL and XNDSAIL commands.

Two new commands ⊗XNDFAIL and XNDSAIL generate and insert a new first
line (which is used for the directory) in appropriate FAIL and SAIL
formats for labels and for specified categories.
These commands apply to the current page.  If more than one page is in
core (through the use of XAPPEND or **<ff> commands) then the information
will be gathered only from the page containing the arrow line and the new
line will appear at the start of this page.  Other pages in core at the time
will be unaffected.

	The XNDSAIL command may be used as an information source in a variety
of different ways.  It is not intended for use with text material.

XNDFail, given with a <cr> termination, lists all labels.
	Given with a α<cr> it lists only those labels that have one or more ↑'s
	Given with αβ<cr> it lists only those labels with ↑↑ (or more).

	This command does not take arguments (unlike XNDS).  If the command is
	typed with a prefix argument of 0, it states the conditions outlined
	above and is otherwise a NO-OP.

XNDSail, given with a <cr> termination, lists all words that are preceded by
	certain catagory words, the default words being RECORD!CLASS,
	RECORD_CLASS and PROCEDURE.

	Having found a catagory word the program lists the first word following
	the catagory word and then ignores any following text until either a comma
	or a semicolon is encountered.  When a semicolon is encountered the search
	for a new catagory word is resumed.  If, on the other hand, a comma is
	encountered (not however within parens) then the next word is taken as
	another example of the catagory and it is listed, preceded by a comma.
	Listings following different catagory words are saparated by spaces.

	The default catagories may be augmented or replaced by any desired
	catagories up to the limit of 4 catagories, as outlined below.

	One additional category may be specified by typing its name after a
		space following the command name and terminating it by a <cr>.
	Up to 4 new categories may be specified with the categories after
		the first one replacing the default categories, one by one.
		To retain some default categories the list is terminated by a <cr>
	If the typed list of categories is terminated by ⊗<cr> then only the
		typed categories are used, and the default ones are eliminated.
	If the command is terminated by ⊗<cr> without any typed category names
		then the original default categories are reinstated.

If given with a prefix argument of 0 this command will accept any typed
categories and then will list the categories that are in effect without
generating a text line.
Major chances have been made to the JUST and JFILL commands.
		     (See p. 16:18 for full details.)

1)  Lines of any length can now be handled by these commands.

2)  Left margins are now specified in terms of indent values, that is, one
    types 0 (not 1 as formerly) if the line is have no indent.  The  right
    margin is still specified by the column position.

3)  The number of blank lines (B) to be used between paragraphs may now be
    specified by typing  a fourth  suffixing number  (it may  be 0).   The
    initial default situation is for the same number of blank lines to  be
    used after justification  as there  were in the  original text.   This
    condition may be reset by typing -1 as the fourth number.

4)  All margin values are now sticky.  The initial default values are now
    0,0,74,-1.

5)  Switches are now used to change  the way that ETV detects  paragraphs.
    The initially set switch, N, (for Normal) calls for any indent ≥2  (or
    a TAB) to signal a new paragraph.  An Arbitrarily input crown indent A
    may, however, be assigned and used  by means of the switches as  noted
    below.  Switches are sticky and are typed as a single letter following
    the command name, separated from it and from any following  parameters
    by spaces.  For fuller details see p. 16.

Switch	Mneumonic 	Conditions in old text identifying a new paragraph
				(Besides preceding blank line)
N	Normal		Normal crown indent ≥2
G	Get		Get Assigned crown indent A by examining text.
R       Rejustify       Rejustify (old C as new A input crown indent)
A	Assigned	Use Asigned crown indent A (as previously determined).



Other changes to these commands

1)  Punctuation marks . ! and ? followed by a space, even with any  number
    of closure symbols (such as ",  ), ], etc) interposed, are treated  as
    sentence endings and are followed by 2 spaces when text is justified.

2)  The fast indent  commands ← and  → now use  the absolute indent  value
    associated with the  last use  of the ⊗XINDENT  command.  The  initial
    default value is 4.

3)  Indents can no longer be specified relatively.  This feature was seldom
    used and it could be interpreted ambiguously.

4)  All left margin indents now use TABs whenever possible.

5)  THE INDENT and ALIGN now take  switches that specify the way in  which
    interior TABs are  to be handled.   With the S  switch operative,  and
    this is  the default  condition,  all interior  TABs are  replaced  by
    spaces before anything else is done.  With the T switch operative TABs
    are left as TABs.

6)  A negative prefix argument may be used to justify the specified number
    of lines before (but not including) the arrow line.

		  Seven new commands  have been  added.

    These commands  facilitate  the  justification  operations,  both  for
normal text and  for tabular material.   All of the  this explanation  was
justified by means of these new commands.  See p. 16 to 18 for details.
These new commands are noted below.

⊗XJGET  This command examines test to determine the C,L,R values that were
    used in it  justification so that  other unjustified text  can be  put
    into the same form.

⊗XSJFILL  This command separates the text into separate sentences so  that
    the sentences can be reordered as desired.

⊗XSJUST  Similar to *SJFILL but the sentences  are padded so as to  obtain
    right-margin justified as well.

⊗XTABLE  This command  allows  one to  chance  the columnar  positions  of
    tabular text that is already  in proper columnar arrangement with  due
    allowance being made for empty entries.

⊗TJFILL  This command handles tabular material that is not in columns  and
    puts  it  into  any  desired  columnar  arrangement.   There  may   be
    associated textual material which will be left justified.

⊗TJUST  Similar to ⊗TJFILL  but the associated  testual material is  right
    justified as well.

⊗XTJGET  This command  does  for tabular  material  what ⊗XJGET  does  for
    ordinary text.
OLD news about E.  More recent news is on p. 2.

∂10/21/76 -- New /S switch; also /N switch no longer needs confirmation.

1)Formatting of /N files no longer needs to be confirmed by user.
2)New switch /S means edit new file at Same line & page as at in current file;
  for example, if you are at line 12 on page 15 if file FOO and say
  ⊗εBAZ/S<cr>, then the arrow will be positioned at line 12 on page 15 of BAZ.

∂10/10/76 -- Three minor bugs fixed.

1)Fix to ⊗F⊗P to remember control-bits on ⊗F for subsequent ⊗* commands.
2)Test for line-too-long-for-line-editor made slightly more conservative.
3)Fix to not screw up when FF found in last word of record in /R file.

∂10/4/76 -- Improvement in use of DM hardware; "∞" accepted in switches.

You can now use "∞" (infinity-sign) as a value in a switch, e.g., /∞P.
It represents a very large positive number and cannot be negated.

On DMs, the line-moving hardware is now NOT used unless it results in
saving at least 10 output characters.

∂9/20/76 -- DM line moving hardware utilized.

On DMs, when lines on the screen simply need to be moved, the DM
insert/delete hardware for lines is used to avoid having to redraw any more
text than necessary.  This involves some attempt at optimization of which
lines get moved and which redrawn when lines on the screen need to be
moved across each other (which cannot be done).  Bugs to ME.

∂9/5/76 -- Major changes have been made to the JUSTification commands, and
7 new  commands have  been added.   The new  features greatly  extend  the
usefullness of  these  commands so  that  text  in unusual  forms  can  be
handled.  Many of the defects and  shortcomings of the older version  have
been corrected.  Report any bugs to ALS.

    The more  important changes  that  will affect  all users  are  listed
below.

1)  Left margins are now  specified as indents,  not as column  positions,
    that is, if one wishes  to specify that the line  is to start with  no
    indent one  types 0  not  1 as  formerly.   This makes  all  commmands
    consistent.  Right  margins are  still in  terms of  column  position.
    Specifications are now  always sticky and  the initial default  values
    are 4,0,74.

2)  It is now possible  to specify the  number of blank  lines to be  used
    between paragraphs.  The default condition is (as before) for there to
    be the same number of blank lines in the justified text as there  were
    in the original and this is signalled by a -1 as the fourth number  in
    the specifying  string (4,0,74,-1).   Existing specifications  can  be
    seen by typing a justifying command specifying 0 lines.

3)  Switches are now used to change the way that ETV detects the start  of
    a new paragraph.  The default  switch N (for Normal) approximates  the
    conditions formerly used.  Blank lines still signal a paragraph  break
    (as they do  for all  switches).  Instead of  requiring a  TAB as  the
    first character (when bank  lines are not used)  any indent ≥2 is  now
    taken as  a crown  line.  Other  switches allow  ETV to  asertain  the
    existing indent conditions from  the text itself and  to use these,  A
    for arbitrary, conditions to signal new paragraphs.  (Try typing ⊗0⊗XJU
    to see how the switch setting is reported.)  Read p. 16  before trying
    to use any other switches.  People who like to use blank lines only as
    new-paragraph indicators and who want their text left with no indents
    can achieve this condition by typing A 0 as a following string after
    their first JUST command (separated fron the command name by a space).  

   (See p. 32 for a longer list of changes and  p. 16:18 for full details)

∂8/20/76 -- Line editor no longer erased on DD/DM when activated while editing text.

Thus, the version of the line editor that appeared when you activated it
will be left on the screen.  This is convenient if, for instance, you
are doing multi-page searches from the line editor and want to look at
the final version of the line you edited while the search is running.
Note that if you typed ahead a lot and it had not all appeared yet when
you activated, then you may not actually see the final version of the line.

∂8/20/76 -- DMs are now considered displays by E.

There are 17 lines for text in E on DMs.  There is no arrow for the
current line; only the position of the cursor under the first character
of the line indicates the "arrow" line.  Thus there is no easy way to
tell the difference between editing a line with the cursor under the
first character and not being inside the line.  Later, the DM line
editor will be displayed as bold, so it will be easy to tell when you
are inside a line.

Since there is no arrow, there is no double arrow for line insert mode,
and there is essentially no way to detect that you are in line insert
mode, except that when you type CR, a new line is inserted.  However,
this shouldn't cause any difficulty since the commands legal in line
insert mode are exactly the same as those legal in line edit mode.

Attached lines are indicated by displaying them as bold or blinking
(blinking if you haven't had your DM modified, bold if you have) instead
of preceding them with a vertical bar.  Attached blank lines are
slightly difficult to detect since a bold or blinking blank is still
blank.  In attach mode, the cursor is returned to the page printer at
the bottom of the page.

Whenever E has to redraw the whole screen on a DM, any display output
still going is flushed since it would be overwritten anyway.

When E doesn't have to redraw the whole screen, it is possible that it
might fail to leave the line editor correctly displayed if you have
typed ahead.  You can always correct the line editor display by typing
ESC R (i.e., NULL R).  If the screen text displayed is also screwed up
somehow, αV (i.e., EDIT V) will redraw the screen correctly.

∂8/8/76 -- A potential bug occasionally resulting from deleting several
in-core pagemarks has been fixed.

∂6/26/76 -- ⊗XHEIGHT command

This new command, preceded by a numerical argument, sets the number
of lines of display to use for text.  This is especially useful on
IIIs to reduce flicker.  For example, ⊗2⊗0⊗XHEIGHT<cr> will cause E
to use 20 lines for displaying text.  Minimum size is 10 lines (since
attach buffer can use 8).  Maximum is terminal dependent.  ⊗XHEIGHT
without an argument will reset to normal size.

∂6/3/76  --  <CR> at end of page no longer adds a line--use β<CR> or αβ<CR>.

This change allows <CR> to be used near the end of a page without the
risk of changing the page (setting the W flag) by accident.  To add a
blank line when you are at the end of a page, use β<CR>.  To add several
blank lines, use ⊗#αβ<CR> (which adds # blank lines).  To add text at
the end of the page, simply type over the row of stars as before; when
you activate that line with anything but <ALT>, its text will be on a
newly added line just like always.  To add lots of text at the end of a
page (or, for that matter, anywhere in a page), type αβ<CR> to enter
line insert mode.  MAIL your COMPLAINTS or COMPLIMENTS to ME.

Now, when you leave a READONLY file from a page which had been altered
(W flag on), you get the standard message:
	SORRY -- PAGE HAS BEEN ALTERED -- PLEASE REAFFIRM MODE.
You can then type either READONLY or READWRITE to determine whether the
altered page will be written out.  Formerly, changes to such a page
where simply ignored and you had no chance to write them out after you
had given the command to change files.

The ε and λ commands not preceded by a numeric argument now update the
display before reading the new filename unless a whole line (the new
filename) has been typed ahead.

An <ALT> response to any of the questions about formatting implies NO to
that question and suppresses any remaining questions, thus letting you
immediately enter a new filename without having to say NO three times.

∂6/1/76 -- Minor bugs/features fixed.

⊗∂αβD given on an empty incore page will now delete the page itself.
Formerly, this command was a no-op on a empty page.

An ET<cr> command which finds that the file named in TMPCOR is gone
(e.g., deleted) will no longer look for another file with different
extension.

The ⊗∂ command will not go beyond an incore pagemark.

αβD has been repaired to preserve the location of marks beyond the
line(s) that are being deleted.

The directory search commands (⊗F⊗P and ⊗F⊗:) now work correctly in
multipage mode.

∂5/27/76 -- New directory search command: ⊗F<string>⊗: finds labels.

This command will search the directory and go to the page for which the
<string> is found.  Then it will search that page for an occurrence of
<string> immediately followed by any of ":", "=", or "←".  Thus, labels
such as START: or definitions such as START=10 or START←10 can be
found easily if START occurs on the page's first (directory) line--use
the command: ⊗FSTART⊗: (as usual, αβF finds a delimited string; the ":"
will be detected correctly if it is the ending delimiter).

Also, both the ⊗F⊗P and ⊗F⊗: directory search commands has another form
to cause E to search only directory lines for pages following the
current incore page(s).  The form to get this effect is ⊗F<string>⊗+⊗P
or ⊗F<string>⊗+⊗: (that is, precede the ⊗P or ⊗: immediately with ⊗+).
This is useful when a string occurs on several directory lines.

∂5/25/76 -- Leading tab on line means new paragraph during justification.
A bug has been fixed that caused lines beginning with a tab not to be
interpreted as the beginning of new paragraphs in justification.  Tabs were
correctly recognized previously only on the line the arrow pointed to.

∂5/18/76 -- XSAVE command added--writes out page & attach buffer in E$SAVE.TXT.
This new command saves the current state of your incore page text,
including any attach buffer text, in the file E$SAVE.TXT on your LOGIN
disk area.  This is now done automatically for almost all fatal errors
detected by E; when it happens as a result of such an error, a message
to that effect is typed out.  (The file E$SAVE.TXT may NOT be written
out successfully if the error is detected again while writing this
file.)  Note that any previous E$SAVE.TXT file is superseded (replaced)
by the new file.  Note also that this command (and its automatic call
upon error detection) does NOT touch the file you currently have open
for editing.

A bug has been fixed that (rarely) caused rippling when unnecessary.

The maximum size of a macro definition has been doubled to 239 characters.

∂5/11/76 -- XSPOOL XXSPOOL XMAIL XSEND XREMIND now take numerical args.
These commands used to output as text either the whole attach buffer
or the whole page.  Now, however, a preceding numerical argument to
any of these commands specifies the number of lines to be output
(spooled or mailed).  If any text is currently attached, the output
will consist of the specified number of lines at the beginning of the
attach buffer; otherwise, the output will consist of the specified
number of lines (from the page) starting at the current line.  As
before, if no argument is given, the output is either the whole
attach buffer (if any) or the whole page.  The argument to these
commands can be specified by a search command (⊗F ⊗XFIND or ⊗∂) just
as can be done with the commands ⊗A (attach) ⊗C (copy) and certain
others.  For example, ⊗∂⊗XMAIL PRG<cr> will mail the current message
to PRG.

Note: a zero or negative argument to MAIL, SEND, or REMIND can be
used to send a one-line message entirely from the X-command line (no
text from page or attach buffer sent).  To do this, you MUST separate
the message text on the command line from the command itself with a
Formfeed.  For example, ⊗0⊗XSEND ME<ff>Hey, it really works!<cr> will
send ME the message "Hey, it really works!"  This technique can also
be used to include a subject line or initial text line ahead of the
message text being output from the page (or attach buffer).  That is,
⊗∂⊗XMAIL/SUBJECT PRG<ff>Sending mail from E<cr> will mail the current
message to PRG with the subject "Sending mail from E".

A bug has been fixed in macro expansions that involved typing the
line editor command αK or αS as the first character on a line.

The ⊗V command now redraws the screen immediately, whether typeahead
is present or not.

∂4/30/76 -- αβI and αβ<cr> at beginning of line editor changed.
These commands no longer insert a blank line ahead of the new blank
line about to be edited in line insert mode.  This change only
affects the results of giving either of these commands from the line
editor when the cursor is at the beginning of the line.

Also, a bug has been fixed that previously prevented ending a find
command with a line editor command when the current line was either
blank, a pagemark, or the row of asterisks at the end of a page.

∂4/27/76 -- Change to effect of αL and αP in multipage mode.
(Note that αβL and αβP are unchanged.  TTY users note that the effect you
now get with the L and P commands is that of αL and αP as described below.)

The αL command will go to the specified line on the current page, which
is defined as the page the line you are pointing to is on.  Thus if you
are on line 3 of page 4, then ⊗1⊗3αL will move the arrow down 10 lines
(to line 13), but not beyond the pagemark for page 5, whose line is
considered to be on page 4 like the row of asterisks at the end of the
last page in core.  The αβL command moves to the specified line within
ALL of the text in core, treating pagemark lines like normal lines; for
example, just αβL will always move to line 1 of the first page in core
whereas αL will always move to line 1 of the current page (defined by the
arrow).  If you have only one page in core, αL and αβL are identical.

The αP command will not flush the incore page(s) if the requested page
is already in core.  In this case, the arrow will simply move to line 1
of the specified page.  The αβP command always flushes the incore pages
and reads in exactly the one page requested.

∂4/27/76 -- Filename scanner cleaned up.

Partially specified filenames are now parsed correctly.  This mainly
fixes the parsing of filenames like "FOO[1]", in which the programmer
name assumed is now always your alias programmer name.  Also, devices
(such as "UDP:") found in TMPCOR files are no longer sticky--you must
specify UDP: each time you want it.

∂4/23/76 -- Bug fix to attaching text in non formatted file.
Attaching text in a non-formatted file and then switching files and
putting down the attached text used to cause a "former WRITE CODE
ERROR" if the page in the non-formatted file did not end with a CRLF.
This bug has been fixed.

∂4/22/76 -- Lots of bugs fixed, mostly in /N and multipage modes.

Approximately 20 bugs have been fixed, including at least 3 in /N mode
operation and at least 10 in multipage mode operation.  It is now
believed that both of these modes should be completely reliable!
Multipage mode involves having two or more consecutive pages in core at
the same time and is invoked by the commands β<FORM>, XINSERT, XAPPEND,
XDELETE and XMARK; all of these commands were formerly capable of causing
trouble, although the trouble in certain cases would not be noticed until
you tried to write out a page.  All of these should work in all cases
now, including multipage mode in a /N file.

Other new features:

The line and page numbers on the trailer line are now kept current with
respect to the arrow line, even in multipage mode.  The header line now
lists the range of pages in core in multipage mode, and the line number
that appears on the header line is relative to the beginning of the whole
range, not the arrow line's page.  The total number of pages displayed on
the trailer line in a non-formatted file (/R) is changed from "?" to the
actual number as soon as the actual number is known.  The record and
character counts usually displayed on the trailer line are suppressed
(replaced by ?R) when editing a non-formatted file (in /R mode).

The R command (Replace attach buffer) no longer leaves multipage mode if
the original page from which the attach buffer came is one of several
pages in core.

The new XALIAS command can be used to change your alias PPN.  It takes a
following text argument in exactly the same form as the system ALIAS
command: 1) PRJ to set project to PRJ and programmer to logged in name,
2) PRJ, to set project to PRJ and retain previous alias programmer name,
and 3) PRJ,PRG to set both project and programmer.  Note that the XALIGN
command forces at least ALIA to be used in the name of the XALIAS
command.  The XALIAS command types out your new ALIAS on both the current
piece of paper and PP 0 so that you will see your changed alias when you
exit.

Saying "N" to all three questions about formatting a non-formatted file
that you are trying to switch to no longers causes the attach buffer to
be spuriously discarded and the screen to be reset to the normal piece of
paper.

If you switch away from a /R file when you have made changes to the
current page, E still does not write out that page nor does it ask you
what mode you intended, BUT it does give a warning that the changed text
was not written out.

The new #XAUTOBURP command sets the threshold number of records of nulls
for autoburping to the number # specified.  A zero or negative arg
disables autoburping entirely.  An arg of just "+" sets the threshold to
its default value, which is currently 19.  If no arg is given, E will
simply type out the current threshold.  (A page to be written out that
has the threshold number of records of nulls, or more, will be
automatically burped to delete all records of nulls from that page.)

αD used in macros to delete a CRLF has been improved.  To work
completely, however, it must be preceded by a α<tab> (or αK<cr> or
αS<cr>) which is not separated from the αD by any character with control
bits.  E.g., α<tab>XYZαD and α<tab><bs>XαD will work properly, but
α<tab>α<bs>XαD will not do the right thing in certain cases.  Note that
it is only in macros that αD doesn't always work--plain typeahead still
works perfectly.  (The effect of bad uses of αD is that characters after
the αD in the macro definition up through the first activation character
following are not "typed" until the macro expansion ends, which can be
particularly noticeable if you use a repeat argument on the ⊗Y command.)

A warning message is generated at initialization time if the upper
segment is not write protected or if the upper segment checksum is not
correct.

∂4/11/76 -- Line redrawing bugs fixed.
For a long time (since last summer), E has failed to redraw (on DD) any
line which was entered into the line editor with a non-line-editor
command (commands other than αS α<space> α<tab> etc.) and which was
activated with altmode.  This bug has finally been fixed, and it is now
claimed that all line-redrawing bugs have been fixed.  If you see E fail
to correctly display one or more lines, please report to ME exactly what
you did to make it lose.  Thanks--ME.

Also fixed is the failure to redraw the attach buffer when ⊗-⊗C is given
with more than 8 lines attached.

∂4/9/76 -- More minor changes/bug fixes.
After E has made you confirm a null substitution command, it no longer
   forces the first substitution to be done with the line editor.
⊗R command (replace attach buffer) no longer dies if you have switched
   files.  Gives error message instead.
⊗XRSYS ⊗XRUN ⊗XTV commands fixed not to spuriously set "command given
   from line editor" bit when swapping in new program.
⊗XBACKGO command modified to restore window position on page returning to.
α<space> in macros has been fixed (was broken when αK was fixed on 4/6/76).

∂4/6/76 -- Several minor new features.
A page bloated by more than 18 records will automatically be burped
   when written out.
⊗#⊗V waits # seconds after displaying screen if # is positive; useful in macros.
Bug fix in macro expansion for αK and αS followed by activator.
⊗T and ⊗B made legal from line editor, but they will not move arrow
   in that case; that is, the arrow line will not glitch past edge of
   screen when these commands are given from the line editor.
⊗G and ⊗π commands removed (they have never been documented,
   so don't look for them).
Window position (as well as arrow line) maintained on exit followed by CONTINUE.

∂3/22/76 -- New switch /13E begins edit at end of page 13.
/E (no argument) begins edit at end of the file's last page.

An old bug has been fixed that caused characters to be lost from the middle
of a message file when rippling occurred if the file was bigger than 8K.

Any number of substitutions can now be done explicitly and E will
no longer stop and request confirmation after 100 have been done.

∂3/19/76 -- The old limit of 511 characters on a line has been removed.

XBREAK will break lines (of any length) at specified column position.  See p. 12.

The XJOIN command has been modified to join lines without introducing
spaces for deleted CRLFs.  (It now undoes an XBREAK.)  See p. 12 for details.

Up to 23 marks in a file allowed (page and line numbers limited to 262142).

The repeat argument limit of 510 has been increased to 262142.

The ≤ and ≥ commands now take repeat numeric arguments.

The Z command (Imlacs only) now accepts a numeric arg which causes an
L command to be simulated with that (relative or absolute) arg first.

∂2/14/76 -- Searching from first character on line.  Null substitution.
The old E bug causing searches to ignore the first character of the
current line is fixed!  Also, the null substitution string bug has
been fixed completely now (we think).

∂2/13/76 -- Changes to commands FF, VT, L, T, B.  New commands ∧ and ∨.
All users are urged to refer to p. 7 for details of these changes which are
quite extensive and which make window moving much easier.

∂2/4/76 -- New commands XLPAREN and XRPAREN.  See p. 22 for details.

∂1/16/76 -- Imlac users can now use the Imlac's line editor to edit
text in E; see p. 28.  Several new extended commands have been added
to allow TTY/Imlac users to execute commands that previously were
available only through certain characters not generally typeable on
TTYs; see p. 29.  The XMARK command and XINSERT and β<FORM> are now
illegal in /N mode; they always used to die horribly in /N mode
anyway (will be fixed eventually).  Bug in \ command fixed to clear
ESC I flag and clear search page number at top.  XEXIST and ∃
commands includes "R" for current file if open in Readonly mode (for
ttys).  /N included in filename displayed when in no-directory mode.
Various other improvements in tty/imlac service.  XTYPE command (old
command) now accepts search distance as amount to type out; mainly
useful in conjuction with new XMSG (XPARTIAL) commands:
XMSG<cr>XTYPE<cr> will type out current message in mail files, or
current page if no ∂'s.  Certain filehacks (eg, \GRIPES) can be
typed to E where filename is expected; allows easy abbreviation of
names of certain files on [2,2]--see p. 30.

∂12/14/75 -- XMARK now works in ATTACH mode.  See p. 18.

∂12/12/75 -- New X commands: XMAIL, XSEND, XREMIND.  See p. 18.

∂12/11/75 -- A new X command, XPROTECTION, is now available.
See p. 18 for details.

A warning is given when one enters a file that has the 400 protection
bit set (such files are not saved by DART).

∂12/5/75 -- When more than 8 files are referenced, by file switching
commands, ETV now gives the new file the referencing number that was
assigned to the longest-unreferenced file.  The user is warned of this
reassignment.

∂11/20/75 -- The trailer line on the screen has been changed.  See p. 5.

∂11/20/75 -- ETV files extended by other programs.
ETV can handle easily almost any file that has been extended by
another program even though the directory has not been updated by
that program.  The single restriction is that the file must remain in
correct ETV format with Formfeeds occurring only as the first
character in a record.  MAIL and RCV extend files ok.  See p. 26.

∂11/13/75 -- XSPOOL and XXSPOOL commands, will now spool the ATTACH buffer.

∂11/11/75 -- Automatic directory updating for extended files.
If you edit with ETV a file that has been extended by some other
program, ETV will automatically update the directory.  However, the
updated directory will not be written out until some other page of
the file has been changed and is being written on the disk.  The
extended part of the file must be formatted correctly for ETV, which
simply means that any formfeeds found in that part of the file must
occur as the first character in a (200-word) record; otherwise, the
file must be reformatted and a new directory generated.  When a file
has been extended properly, ETV will say how many pages have been
added to the file, or if none, how many records have been added to
the last page.

∂10/28/75 -- ETV now permits lines containing up to 133 characters to be
transfered to the line editor for editing (the previous limit was 120).

Lines longer than these limits may be broken up by XJUST and XJFILL
commands.  Their lengths may be ascertained by the XLINCNT command.

∂10/17/75 -- Un-copy-attach bug fixed. 
An attempt to detach more lines than are in the ATTACH buffer no longer
causes trouble. The current line cursor may not be left where you expect
it to be but E does not blow up.

∂10/16/75 -- Bug fixed in macro calls.

∂10/9/75 -- Punctuation-at-end-of-line bug in XJUST command fixed.

∂10/7/75 -- Macro defining and calling commands (⊗XDEFINE and ⊗Y) save
the user from having to type the same sequence of commands several times.
See p. 25. 

∂10/7/75 -- ⊗XBURP command causes RIPPLING to discard any whole records
of nulls from the current page only.

∂10/7/75 -- ⊗V redraws the screen on Data Disc displays without erasing.
αβV still erases before redrawing.

∂10/1/75 -- New partial-sign command ⊗∂<cmd>. See p. 24.

∂9/75 -- ⊗XLINCNT now reports the length of the current line and the
number of characters on the current page.

∂9/75 -- Attempting to move the arrow off the screen usually caused the
window to be reset with the arrow in the middle of the window.

∂9/75 -- ⊗0⊗W and ⊗0⊗L now move half a window in the indicated direction.

∂9/75 -- Type ahead for line editor improved.

∂9/75 -- The ⊗H (Home) and ⊗? commands now will take arguments. See p. 15.

∂8/75 -- Parenthesis finding/matching commands available. See p. 22.

∂8/75 -- Automatic and manual beeping upon command completion. See p. 23.

∂8/75 -- Entering and leaving the line editor now does not set the
WRITE flag unless the line is actually changed.

∂8/75 -- After exiting from E, the monitor command CONTINUE restores E
at the same line and page from which the command to exit was given. 

∂7/75 -- The ⊗; and ⊗: commands move straight up and down inside line editor.
The commands ⊗; and ⊗: do the same thing as ⊗↑ and ⊗↓ respectively,
except that instead of positioning you at the end of the new line,
they position you at the display column where you were when you gave
the command.  Thus these commands move you (inside the line editor)
straight up and down, except that if the display column is in the
middle of a tab on the new line, then you are positioned at the
beginning of that tab and if the display column is beyond the end of
the newly edited line, you are positioned at the end of that line. 

∂7/75 -- The α* and αβ* commands repeat the last search command given.
See p. 13.

∂7/75 -- α<cr> restores previous line editor line when typing filename.
When you get the message "Try again" after specifying a file name
with some error, it is now possible to invoke the <control><cr> line
editor command to recall what you had typed so that you need not type
everything over again. Most of the time this does not work but it
does here. 

∂7/75 -- Bug in formatting SOS files fixed.
A recent bug in formatting SOS files has been fixed. Users are still
advised to repage such files with the /F switch if this is a
reasonable thing to do. 

∂6/75 -- /F and /F/R modes break long pages up by inserting FFs.
See p. 20.

∂6/75 -- Unexpected errors encountered by E are now automatically recorded.
An FBI program reports most of the mal-functionings to ALS when you
get into trouble and you may hear from him for more details if he
thinks that he can do something for you (or vice versa).

∂6/75 -- The main timing problem on entering the line editor is fixed.
Now you can type ahead characters meant for the line editor without
waiting for the line editor to be set up after you have given a
command to edit a particular line.  The fix involved a system modification.

∂1975 -- Formerly fatal errors kludged around.
Some formerly fatal errors no longer cause E to HALT, although the
fix may not always work and E may crash later after all. 

∂1975 -- UDP files are remembered on file switching (maybe almost right).